1

Laravel 4 アプリケーション用のカスタム職人コマンド (foo) を作成しています。ユーザーガイドから、引数とオプションを受け入れる方法を確認できます。

php artisan foo argument --option

しかし、 migrate:installなどの組み込みの職人コマンドと同じスタイルで、多くの「メソッド」を持つカスタム職人コマンドが必要な場合はどうすればよいでしょうか。私は次のようなものを作りたい:

php artisan foo:baz argument --option

:コロンセパレーターに基づいてさまざまなメソッドを実装するための推奨される方法は何ですか? 私がこれまでに試したことは、「メソッド」ごとにまったく新しい職人コマンドを作成することだけです。より効率的な方法はありますか?

4

2 に答える 2

3

おっしゃる通り、メソッドごとに新しい 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、下位互換性があります。より詳しい情報

于 2016-08-20T12:08:18.497 に答える
2

名前を設定するだけです:

protected $name = 'foo:baz';
于 2013-11-12T01:34:16.680 に答える