私は http://laravel.com/docs/5.0/commands をフォローしていて、Laravel 5.で職人のコマンドを作成できます。しかし、どうすれば作成できますか?職人のコマンドとそれをパッケージにパッケージ化しますか?
$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);
}
}
laravel 5.6では、非常に簡単です。
クラス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-> 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職人foo:method
これは、コマンドハンドルメソッドから「foo」をエコーします。重要な部分は、パッケージサービスプロバイダーのブート関数内にコマンドファイルの正しい名前空間を与えることです。