如何创建laravel artisan命令?

时间:2014-02-28 12:24:10

标签: php laravel-4 namespaces

我想创建命令order:processorder: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);,但这些都不起作用。我需要做什么才能从命令行运行我的新命令?我知道问题与使用命名空间有关,但我找不到任何关于使用命名空间的artisan命令的文档。

3 个答案:

答案 0 :(得分:2)

对于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

答案 1 :(得分:1)

首先使用 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);

答案 2 :(得分:0)

我仍然不知道如何使用命名空间,但我已经想出了这一部分。

答案是,使用php artisan command:make orderProcessCommand,并将其注册到Artisan::add(new orderProcessCommand);。在orderProcessCommand.php中,将$ name设置为order:process。 Artisan将按照注册命令的指示读取该类,但可以按$ name字段中的描述调用它。