teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

参考リンクの追加

2016/10/13 21:17

投稿

nnssn
nnssn

スコア1221

answer CHANGED
@@ -38,4 +38,7 @@
38
38
  ## 参考
39
39
 
40
40
  Console コンポーネント | Symfony2日本語ドキュメント
41
- [http://docs.symfony.gr.jp/symfony2/components/console/introduction.html](http://docs.symfony.gr.jp/symfony2/components/console/introduction.html)
41
+ [http://docs.symfony.gr.jp/symfony2/components/console/introduction.html](http://docs.symfony.gr.jp/symfony2/components/console/introduction.html)
42
+
43
+ console/Application.php at master · symfony/console
44
+ [https://github.com/symfony/console/blob/master/Application.php#L892](https://github.com/symfony/console/blob/master/Application.php#L892)

1

手順の訂正

2016/10/13 21:17

投稿

nnssn
nnssn

スコア1221

answer CHANGED
@@ -1,25 +1,33 @@
1
- Laravelのことはあまり分かりませんが、Symfony\Consoleサイドから回答させていただきます。原因は多分、-vや-qなどの共通オプションを管理るのが`Symfony\Component\Console\Command\Command(Illuminate\Console\Commandの親クラス)`ではなく、`Symfony\Component\Console\Application`なことだと思います。
1
+ Laravelのことはあまり分かりませんが、Symfony\Consoleサイドから回答させていただきます。原因は、-vや-hなどの共通オプションを管理しているのが`Symfony\Component\Console\Command\Command(Illuminate\Console\Commandの親クラス)`ではなく、`Symfony\Component\Console\Application`なことだと思います。
2
2
 
3
- `Application`は`Symfony\Console`を利用したコンソールアプリケーションを作成する際に起点になるクラスで、作成たコマンドこれ登録してから呼び出します。多分ですが、Laravelも内部的に利用しているのではないでしょうか。
3
+ `Symfony\Console`で作成したコンソールアプリケーションでい`Command``Application`追加してから呼び出す形になっていて、この場合に-vオプションなどが有効になるようです。多分、Laravelも内部利用しているのではないでしょうか。
4
4
 
5
- また、`Symfony\Console`にはテストをサポートすための`CommandTester`といクラスが用意されていて、これを利用すれば`Application`を通したの同じ形になります。一度以下の内容で試してみてください。
5
+ この仕組みをテストで簡単に扱えう用意されているのが`CommandTester`というクラスになります。一度以下の内容で試してみてください。
6
6
 
7
7
  ```php
8
8
  // 追加
9
+ use Symfony\Component\Console\Application;
9
10
  use Symfony\Component\Console\Tester\CommandTester;
10
11
  ```
11
12
 
12
13
  ```php
14
+ // 変更
13
15
  public function setUp()
14
16
  {
15
17
  parent::setUp();
16
- $command = new \App\Console\Commands\GoodExampleCommand;
18
+ $goodExampleCommand = new \App\Console\Commands\GoodExampleCommand;
17
- $command->setLaravel($this->app);
19
+ $goodExampleCommand->setLaravel($this->app);
18
20
 
21
+ // ApplicationにCommandを登録
22
+ $app = new Application();
23
+ $app->add($goodExampleCommand);
24
+
19
25
  // CommandTesterを被せる
26
+ $command = $app->find('goodexample:start');
20
27
  $this->command = new CommandTester($command);
21
28
  }
22
29
 
30
+ // 変更
23
31
  protected function execute(array $params = [])
24
32
  {
25
33
  $this->command->execute($params);