Laravel Zero 入门(创建 PHP 命令行程序)

简介

Laravel Zero 是一个开源PHP框架,可用于创建控制台应用程序。

Laravel Zero 不是 Laravel 官方拓展包,而是由 Nuno Maduro 创建的,他也是 Laravel 团队的软件工程师, 所以我丝毫不怀疑代码的质量。

本教程将快速介绍如何使用 Laravel Zero 并且构建一个简单的 Hello World 命令行应用程序。

先决条件

在开始之前, 你需要先安装 PHP 和 composer

我将会使用 DigitalOcean 上的 Ubuntu 服务器进行演示。

用户 DigitalOcean 账号后, 您可以按照以下步骤安装composer 和 PHP:

安装

在开始安装之前, 请确保已安装以下PHP模块:

  • php-mbstring
  • php-xml

要检查是否已经安装了那些模块,只需要运行以下命令:

php -m

如果你按照上面的步骤做了并且已经启动了 Ubuntu 服务器,你就可以使用以下命令安装模块了:

sudo apt install php-mbstring php-xml

创建一个新的 Laravel Zero 项目,你可以运行以下命令:

composer create-project --prefer-dist laravel-zero/laravel-zero hello-world

提示: 你可以用自己的项目的名字来代替  hello-world 部分。

现在你需要运行 php application 而不是 php artisan,例如:

php application

输出:

  Application  unreleased

  USAGE: application <command> [options] [arguments]

  inspiring    Display an inspiring quote
  test         Run the application tests

  app:build    Build a single file executable
  app:install  Install optional components
  app:rename   Set the application name

  make:command Create a new command

  stub:publish Publish all stubs that are available for customization

如果你愿意,你还可以通过运行如下命令来更改 应用 的名称:

php application app:rename hello-world

 
这将把 应用 的可执行文件重命名为 hello-world。因此从现在开始,你需要运行 php hello-world 而非 php application

php hello-world

  Hello-world unreleased

  USAGE: hello-world <command> [options] [arguments]

  inspiring    Display an inspiring quote
  test         Run the application tests

  app:build    Build a single file executable
  app:install  Install optional components
  app:rename   Set the application name

  make:command Create a new command

  stub:publish Publish all stubs that are available for customization

文件夹的内容如下所示:

README.md
app
bootstrap
box.json
composer.json
composer.lock
config
hello-world
phpunit.xml.dist
tests
vendor

我们已经准备好了 Laravel Zero 应用。接下来,让我们深入了解一些可用的命令。

命令

为了创建一个新命令,你可以运行以下命令:

php hello-world make:command HelloWorldCommand

输出如下:

Console command created successfully.

这将会在生成 app/Commands/HelloWorldCommand.php 新文件。

用你最喜欢的编辑器打开该文件并且更改如下内容:

  • 用你想要的命令的名称更改此内容:
protected $signature = 'command:name';
  • 用你的命令的描述更改此内容:
 protected $description = 'Command description';
  • handle() 方法中,你可以增加你的业务逻辑,在我们的例子中,我们只是输出了一条简单的消息:
    public function handle()
    {
        echo 'Hello World';
    }

如果你曾经创建过 自定义 artisan 命令, 你可能发现这个过程非常相似:

配置

Laravel Zero 应用的配置文件被存储在 config 目录中。

默认情况下,其中有两个文件:

  • app.php: 它包含了应用的一些信息
  • commands.php: 你可以使用该文件中的默认命令配置列表

如果你在 config 目录中添加了新文件,它将自动注册。例如,让我们增加一个名为 hello。php 的文件:

touch config/hello.php

然后增加以下内容:

<?php
return [
    'greeting' => 'Hello World!',
];

你还可以通过 config('hello.greeting') 访问它,例如,你可以将在最后一步中创建的测试命令的 handle() 方法更新为:

    public function handle()
    {
        echo config('hello.greeting');
    }

如果你想恢复 .env 文件,可以通过运行以下命令安装 Dotenv 插件:

php hello-world app:install dotenv

接下来,我们将介绍更多 Laravel Zero 可用的插件!

插件

开箱即用的 Laravel Zero 被完全剥离,所以你的应用程序中没有任何不必要的代码,这样你就可以尽可能地保持它的轻量。

你可以使用 app:install 命令来添加插件。

要获取可用插件的列表,只需运行:

php hello-world app:install

你将看到以下输出:

 Laravel Zero - Component installer:
  [console-dusk ] Console Dusk: Browser automation
  [database     ] Eloquent ORM: Database layer
  [dotenv       ] Dotenv: Loads environment variables from ".env"
  [http         ] Http: Manage web requests using a fluent HTTP client
  [log          ] Log: Robust logging services
  [logo         ] Logo: Display app name as ASCII logo
  [menu         ] Menu: Build beautiful CLI interactive menus
  [queue        ] Queues: Unified API across a variety of queue services
  [schedule-list] Schedule List: List all scheduled commands.
  [self-update  ] Self-update: Allows to self-update a build application

如果你想恢复使用 .env 文件,你可以运行下面的命令来安装 Dotenv 插件:

php hello-world app:install dotenv

接下来,我们将讨论 Laravel Zero 的更多可用插件!

插件

开箱即用的 Laravel Zero 被完全剥离, 所以你的应用程序中并没有什么多余的代码,,这样你就可以它他尽可能的轻量。

你可以使用 app:install 命令来引入一个扩展。

要获取可用的扩展列表,仅执行:

php hello-world app:install

你将会看到下面的输出:

 Laravel Zero - Component installer:
  //Console dusk  浏览器自动化
  [console-dusk ] Console Dusk: Browser automation 
  // Eloquent ORM: 数据库层
  [database     ] Eloquent ORM: Database layer
  // Dotenv: 从 .env 加载可用环境变量
  [dotenv       ] Dotenv: Loads environment variables from ".env" 
  // Http:使用流畅的HTTP客户端管理 web 请求
  [http         ] Http: Manage web requests using a fluent HTTP client
  // Log:健壮的日志服务
  [log          ] Log: Robust logging services 
  // Logo:将应用名称展示为 ASCII 标志
  [logo         ] Logo: Display app name as ASCII logo 
  // Menu: 构建一个漂亮的 CLI 交互式菜单
  [menu         ] Menu: Build beautiful CLI interactive menus 
  // Queues:支持各种队列服务的统一API
  [queue        ] Queues: Unified API across a variety of queue services 
  // Schedule List: 列出所有的计划命令
  [schedule-list] Schedule List: List all scheduled commands. 
  // Self-update:允许构建应用程序自更新
  [self-update  ] Self-update: Allows to self-update a build application 

你可以使用交互式菜单选择一个插件并安装它。

在这篇文章中,我将通过几个例子来讲解!

Database

为了包含 Laravel 的 Eloquent 组件,你需要运行以下命令:

php hello-world app:install database

注意:不要忘记将 hello-world 部分更改为你的应用程序名称。
在后台,app:install 命令使用 composer,因此如果你曾经使用过 composer,你会看到对你来说非常熟悉的输出:

Installing database component...
Require package via composer: loading...
Do not run Composer as root/super user! See https://getcomposer.org/root for details
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing illuminate/database (v8.8.0): Downloading (100%)

这将在 config/database.php 中为你添加一个新的配置文件,你可以在其中配置数据库详细信息。默认情况下,它使用 SQLite,因此你无需进行任何更改,除非你想使用不同的 SQL 引擎。

一旦安装了数据库插件,、你就可以像在 Laravel 中使用 Elequent 一样使用它!

用法:

php hello-world make:migration create_users_table
php hello-world migrate

use DB;

$users = DB::table('users')->get();

日志记录

为了安装 Logging(日志) 插件,您只需要运行:

php <your-app-name> app:install log

这会将 Laravel 日志服务包含到你的 Laravel Zero 项目中!

具体用法如下:

use Log;

Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);

构建应用程序

准备好构建应用程序后,你可以运行以下命令来构建单个文件可执行文件:

php hello-world app:build

这将询问你的构建版本,它会在 builds 文件夹中生成一个可执行文件。

写在最后

这差不多吧!现在您知道如何使用 Laravel Zero 并构建酷炫的命令行应用程序了!

有关更多信息,请务必在此处查看官方文档:laravel-zero.com/docs/

如果你喜欢这个项目,请务必在 GitHub 上加星关注。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://devdojo.com/bobbyiliev/what-is-l...

译文地址:https://learnku.com/laravel/t/66287

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

mark

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!