おっしゃる通り、メソッドごとに新しい Artisan コマンド (またはクラス) が必要です。ただし、必要なのは各ファイルを に登録することapp/Console/Kernel.php
だけです。後で構文を変更することにした場合、Laravel は$signature
自動的に変更を取得し、ファイルの名前を変更する必要はありません。
あなたが言及したLaravelの例では、migrate、コマンド名ごとに個別のファイルを持つディレクトリがあります(コロンのないものを含む):
/vendor/laravel/framework/src/Illuminate/データベース/コンソール/移行
- 移行 -> MigrateCommand.php
- 移行: インストール -> InstallCommand.php
- migrate:refresh -> RefreshCommand.php
- migrate:reset -> ResetCommand.php
- 移行: ロールバック -> RollbackCommand.php
- migrate:status -> StatusCommand.php
再利用したいコード ( DRY ) がある場合、上記のコマンドを調べると、一部のコマンドがtraitsを使用していることに注意してください。たとえば、Illuminate\Console\ConfirmableTraitには、 confirmToProceed()メソッドが含まれており、本番環境で実行されている場合は、ユーザーが本当に続行したい場合。
注意: Artisan の構文は 5.1 で$name
(引数とオプションを指定するかなり複雑な方法で) からより単純な に変更され$signature
、下位互換性があります。より詳しい情報