Laravel 5 - Creating Artisan Command for Packages

后端 未结 2 1304
刺人心
刺人心 2021-02-05 09:42

I have been following along http://laravel.com/docs/5.0/commands and able to create artisan command in Laravel 5. But, how can I create artisan command and package it to package

相关标签:
2条回答
  • 2021-02-05 10:06

    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);
        }
    }
    
    0 讨论(0)
  • 2021-02-05 10:25

    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.

    0 讨论(0)
提交回复
热议问题