回答編集履歴

2

参考リンクの追加

2016/10/13 21:17

投稿

nnssn
nnssn

スコア1221

test CHANGED
@@ -79,3 +79,9 @@
79
79
  Console コンポーネント | Symfony2日本語ドキュメント
80
80
 
81
81
  [http://docs.symfony.gr.jp/symfony2/components/console/introduction.html](http://docs.symfony.gr.jp/symfony2/components/console/introduction.html)
82
+
83
+
84
+
85
+ console/Application.php at master · symfony/console
86
+
87
+ [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

test CHANGED
@@ -1,18 +1,20 @@
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
3
 
4
4
 
5
- `Application`は`Symfony\Console`を利用したコンソールアプリケーションを作成する際に起点になるクラスで、作成たコマンドこれ登録してから呼び出します。多分ですが、Laravelも内部的に利用しているのではないでしょうか。
5
+ `Symfony\Console`で作成したコンソールアプリケーションでい`Command``Application`追加してから呼び出す形になっていて、この場合に-vオプションなどが有効になるようです。多分、Laravelも内部利用しているのではないでしょうか。
6
6
 
7
7
 
8
8
 
9
- また、`Symfony\Console`にはテストをサポートすための`CommandTester`というクラスが用意されていて、これを利用すれば`Application`を通したのと同じ形になります。一度以下の内容で試してみてください。
9
+ この仕組みをテストで簡単に扱えよう用意されている`CommandTester`というクラスになります。一度以下の内容で試してみてください。
10
10
 
11
11
 
12
12
 
13
13
  ```php
14
14
 
15
15
  // 追加
16
+
17
+ use Symfony\Component\Console\Application;
16
18
 
17
19
  use Symfony\Component\Console\Tester\CommandTester;
18
20
 
@@ -22,25 +24,39 @@
22
24
 
23
25
  ```php
24
26
 
27
+ // 変更
28
+
25
29
  public function setUp()
26
30
 
27
31
  {
28
32
 
29
33
  parent::setUp();
30
34
 
31
- $command = new \App\Console\Commands\GoodExampleCommand;
35
+ $goodExampleCommand = new \App\Console\Commands\GoodExampleCommand;
32
36
 
33
- $command->setLaravel($this->app);
37
+ $goodExampleCommand->setLaravel($this->app);
38
+
39
+
40
+
41
+ // ApplicationにCommandを登録
42
+
43
+ $app = new Application();
44
+
45
+ $app->add($goodExampleCommand);
34
46
 
35
47
 
36
48
 
37
49
  // CommandTesterを被せる
50
+
51
+ $command = $app->find('goodexample:start');
38
52
 
39
53
  $this->command = new CommandTester($command);
40
54
 
41
55
  }
42
56
 
43
57
 
58
+
59
+ // 変更
44
60
 
45
61
  protected function execute(array $params = [])
46
62