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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
mark