leafs / aloe
专为您的leaf应用提供强大的命令行工具。
Requires
- illuminate/support: *
- leafs/fs: ^1.0
- leafs/mvc-core: *
- psy/psysh: ^0.10.9|^0.11
- symfony/console: ^5.0|^6.0
- symfony/process: ^5.0|^6.0
Requires (Dev)
- leafs/leaf: *
README
Aloe CLI
Aloe 是一个 CLI 工具,它随 Leaf API 和 Leaf MVC v2 及以上版本一起提供。它与 Leaf 控制台工具集成,并完全替代了其功能。Aloe 位于您的应用程序根目录下的 leaf
脚本中,并提供了一些有用的命令,这些命令可以在您构建应用程序时协助您。要查看所有可用命令,可以使用 list
命令或调用 leaf
。
php leaf list
# or
php leaf
每个命令也包括一个 "帮助" 屏幕,显示并描述命令的可用参数和选项。要查看帮助屏幕,请在命令名称前加上 help
php leaf help db:migrate
交互 (REPL)
Aloe 随带 aloe-interact,这是一个由 PSY Shell 驱动的强大 REPL。交互允许您与您的应用程序交互,访问 Leaf 应用程序中的变量和方法,运行和回滚迁移,执行数据库操作等。您可以通过以下方式访问 interact
php leaf interact
编写命令
除了 aloe 提供的命令外,您还可以创建自己的命令并通过 aloe cli 运行它们。Aloe CLI 允许您直接在 CLI 中生成要运行的命令。
生成命令
要创建一个新的命令,您可以使用 g:command
aloe 命令。此命令将在默认命令目录中创建一个新的命令类。
Leaf API 和 Leaf MVC 中命令的默认目录是 App\Console
,使用骨架,您可以自由决定将命令放置在哪里。
php leaf g:command SendMail
Aloe 还可以直接为您生成命名空间命令。您不必像其他 CLI 工具那样手动设置命名空间。
php leaf g:command mail:send
如果您愿意,您甚至可以通过名称而不是类来生成命令。Aloe 足够智能,能够区分它们。
php leaf g:command shutdown
命令结构
在生成您的命令后,您应该开始编写在调用命令时执行的代码。即使您使用类名创建命令,Aloe 也会为您智能地生成命令名称,但如果它不符合您的需求,您总是可以更改它。
以 mail:send
为例,Aloe 将生成 App\Console\MailSendCommand
,在这个文件中,我们会看到类似这样的内容
<?php namespace App\Console; use Aloe\Command; class ExampleCommand extends Command { protected static $defaultName = "mail:send"; public $description = "mail:send command's description"; public $help = "mail:send command's help"; public function handle() { $this->comment("mail:send command's output"); } }
我们可以添加一个参数来查找要发送电子邮件的用户,并在发送电子邮件时输出一条消息。
public function config() { $this->setArgument("user", "required"); } public function handle() { $user = $this->argument('user'); $this->comment("Sending email to $user"); $success = \CustomEmailHandler::send($user); if ($success) { $this->info("Email sent successfully"); } else { $this->error("Couldn't send email, pls try again"); } }
注册命令
默认情况下,aloe cli 会注册所有生成的命令,但是如果您有一个想要手动注册的命令,或者需要使用 Aloe 的包中的命令,您也可以轻松地添加它们。
只需在项目的根目录中定位 aloe
文件,打开它并找到关于自定义命令的注释部分。
/* |-------------------------------------------------------------------------- | Add custom command |-------------------------------------------------------------------------- | | If you have a new command to add to Leaf | */ $aloe->register(\App\Console\ExampleCommand::class);
已经注册了一个示例命令,因此您可以遵循此示例。只需调用 register
方法。您也可以传递一个要注册的命令数组,因此,一个具有几个要注册命令的自定义包可以简单地返回所有这些命令的数组。
$aloe->register([ \App\Console\AppCommand::class, CustomPackage::commands(), ]);
💬 保持联系
📓 学习Leaf 3
- Leaf拥有一个非常易于理解的文档,其中包含了Leaf中所有操作的信息。
- 您还可以查看我们的YouTube频道,其中包含不同主题的视频教程。
- 我们还在制作codelabs,这将带来您可以遵循和贡献的动手教程。
😇 贡献
我们很高兴有您。所有贡献都受欢迎!要开始,熟悉我们的贡献指南,然后您就可以准备好提交您的第一个pull request 🚀。
要报告安全漏洞,您可以通过twitter联系@mychidarko或@leafphp。我们将协调修复,并最终将解决方案提交到这个项目中。
代码贡献者
🤩 赞助Leaf
您的现金贡献对我们来说意义重大,可以帮助我们使Leaf变得更好。您可以在open collective上赞助Leaf和我们的任何包,或查看贡献页面,了解如何贡献。
对我们所有现有的现金/代码贡献者,我们都爱你们❤️