【问题标题】:How do I create a laravel artisan command?如何创建 laravel artisan 命令?
【发布时间】:2014-04-01 10:55:44
【问题描述】:

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

【问题讨论】:

    标签: 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 字段中的说明进行调用。

        【讨论】:

          猜你喜欢
          • 2015-04-14
          • 2019-04-02
          • 2016-02-07
          • 1970-01-01
          • 2018-02-21
          • 2015-12-24
          • 1970-01-01
          • 1970-01-01
          • 2017-01-18
          相关资源
          最近更新 更多