【问题标题】:How do I create a laravel artisan command?如何创建 laravel artisan 命令?
【发布时间】:2014-04-01 10:55:44
【问题描述】:
我想创建命令order:process 和order:lock。到目前为止,我发现我需要运行 php artisan command:make process --namespace=order 来创建 order:process 类文件。然后我需要将 app/commands/process.php 中的 $name 值设置为“order:process”。这就是我卡住的地方。
我想我需要在 app/start/artisan.php 中添加一些内容以使命令可用,但我不知道是什么。我试过Artisan::add(new order\process); 和Artisan::add(new process);,但这些都不起作用。我需要做什么才能让我的新命令可以从命令行运行?我知道问题与命名空间的使用有关,但我找不到任何关于使用命名空间的工匠命令的文档。
【问题讨论】:
标签:
php
laravel-4
namespaces
【解决方案1】:
对于 laravel 5.0
php artisan make:console Foo --command=foo:do
编辑位于 app/Console/Commands/Foo.php 中的命令
然后通过向 app/Console/Kernel.php 添加条目来注册您的命令
protected $commands = [
'Cloudlite\Console\Commands\Inspire',
'Cloudlite\Console\Commands\EmailParser',
'Cloudlite\Console\Commands\Foo',
];
您现在可以像下面这样运行(示例默认选项,编辑 Foo.php)
php artisan foo:do example=1
【解决方案2】:
首先使用 artisan 命令创建它们
php artisan command:make OrderProcessCommand --command=order:process
php artisan command:make OrderLockCommand --command=order:lock
编辑位于app/commands的命令
然后在app/start/artisan.php注册你的命令
Artisan::add(new OrderProcessCommand);
Artisan::add(new OrderLockCommand);
【解决方案3】:
我仍然不知道如何使用命名空间,但我已经弄清楚了这部分。
答案是,使用php artisan command:make orderProcessCommand,并将其注册到Artisan::add(new orderProcessCommand);。在 orderProcessCommand.php 中,将 $name 设置为 order:process。 Artisan 将按照注册命令的指示读取该类,但使其可以按照 $name 字段中的说明进行调用。