Laravel 5 - 为包创建工匠命令

时间:2015-02-13 04:14:58

标签: php laravel laravel-5 artisan

我一直在跟随http://laravel.com/docs/5.0/commands并且能够在Laravel 5中创建工匠命令。但是,我如何创建artisan命令并将其打包到包中?

2 个答案:

答案 0 :(得分:37)

您可以而且应该使用$this->commands()方法中的register()在服务提供商中注册包命令:

namespace Vendor\Package;

class MyServiceProvider extends ServiceProvider {

    protected $commands = [
        'Vendor\Package\Commands\MyCommand',
        'Vendor\Package\Commands\FooCommand',
        'Vendor\Package\Commands\BarCommand',
    ];

    public function register(){
        $this->commands($this->commands);
    }
}

答案 1 :(得分:0)

在laravel 5.6中,它很容易。

class FooCommand,

<?php

namespace Vendor\Package\Commands;

use Illuminate\Console\Command;

class FooCommand extends Command {

    protected $signature = 'foo:method';

    protected $description = 'Command description';

    public function __construct() {
        parent::__construct();
    }

    public function handle() {
        echo 'foo';
    }

}

这是包的 serviceprovider 。 (只需要将$ this-&gt; commands()部分添加到启动功能)。

<?php
namespace Vendor\Package;

use Illuminate\Events\Dispatcher;
use Illuminate\Support\ServiceProvider;

class MyServiceProvider extends ServiceProvider {

    public function boot(\Illuminate\Routing\Router $router) {
        $this->commands([
            \Vendor\Package\Commands\FooCommand ::class,
        ]);
    }
}

现在我们可以像这样调用命令

  

php artisan foo:方法

这将呼应“foo&#39;来自命令句柄方法。重要的是在包服务提供者的启动功能内给出正确的命令文件命名空间。