Laravel 4:在包中部署自定义artisan命令

use*_*781 5 php laravel laravel-4

我开发了一些自定义工匠命令,以便更容易地使用我的包.是否可以将artisan命令包含在包中以便于部署?如果可以,怎么样?

谢谢.

Ant*_*iro 13

在包结构中设置命令:

<?php namespace App\Artisan;

use Illuminate\Console\Command;

class MyCommand extends Command {

    protected $name = 'mypackage:mycommand';

    protected $description = 'Nice description of my command.';

    public function fire()
    {
        /// do stuff
    }

}
Run Code Online (Sandbox Code Playgroud)

您可以在您的包裹服务提供商处:

<?php namespace App;

use Illuminate\Support\ServiceProvider;
use App\Artisan\MyCommand;

class MyServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->registerMyCommand();

        $this->commands('mycommand');
    }

    private function registerMyCommand()
    {
        $this->app['mycommand'] = $this->app->share(function($app)
        {
            return new MyCommand;
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

诀窍是在线

$this->commands('mycommand');
Run Code Online (Sandbox Code Playgroud)

这告诉Laravel将您的命令添加到可用的工匠列表中.