简体   繁体   中英

Laravel 5 - Creating Artisan Command for Packages

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

You can and should register the package commands inside a service provider using $this->commands() in the register() method:

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);
    }
}

In laravel 5.6 it's very easy.

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';
    }

}

this is the serviceprovider of package. (Just need to add $this->commands() part to boot function).

<?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,
        ]);
    }
}

Now we can call the command like this

php artisan foo:method

This will echo 'foo' from command handle method. The important part is giving correct namespace of command file inside boot function of package service provider.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM