11194
Laravel5で開発をしています。

プロジェクトを作成すると、自動的に`php artisan optimize`が実行され、`vender/compiled.php`が生成されます。

この状態だと、boot時に、`compiled.php`が優先して読み込まれ、自分が追記したサービスプロバイダの内容が読み込まれません。

その為、毎回、プロジェクト作成後に`compile.php`を削除しています。

この現象に気付いたきっかけは、`EventServiceProvider`にイベントハンドラの設定を追加したのに、ハンドラが発火されず、ハマったことです。

optimizeはパフォーマンスを上げる有効な手段ですが、デプロイ時に必要になるもので、開発時には必要ないと思っています。

そこで、質問です。

  * `compiled.php`がプロジェクト作成後に生成される理由は何かあるでしょうか？
  * 毎回プロジェクト作成後に手動で`compiled.php`を削除しなくてすむ、回避方法はあるでしょうか？
  * 上記の私の認識に何か間違えはあるでしょうか？その為に招いている現象でしょうか？
CC BY-SA 3.0
2015-05-19T00:06:14.783
10343
2015-06-10T17:01:01.503
2015-06-09T21:33:56.913
9529
9529
question
php laravel
compiled.phpがプロジェクト作成時に生成されてしまう
> compiled.phpがプロジェクト作成後に生成される理由は何かあるでしょうか？

パフォーマンス向上のためです。

> この現象に気付いたきっかけは、EventServiceProviderにイベントハンドラの設定を追加したのに、ハンドラが発火されず、ハマったことです。

.env の `APP_DEBUG` が `true` ならば、 optimize 時にあなたの作成したクラスが compile
されることはなく、[代わりに clear-compiled
が実行されます](https://github.com/laravel/framework/blob/5.0/src/Illuminate/Foundation/Console/OptimizeCommand.php#L70)。

.env を確認してみてください。

> 毎回手動でcompiled.phpを削除しなくてすむ、回避方法はあるでしょうか？

.env の `APP_DEBUG` を `true` に設定してください。

```

    $ php artisan clear-compiled
    
```

でも削除することができます。

> 上記の私の認識に何か間違えはあるでしょうか？

下記URLに詳しく書いてありますので読んでみてください。

[Laravel Recipes日本語版 |
パフォーマンス改善するためにフレームワークを最適化したい](http://recipes.laravel.jp/recipe/50)
CC BY-SA 3.0
2015-05-19T09:26:34.620
10367
2015-05-20T09:55:42.793
2015-05-20T09:55:42.793
8000
9732
10343
answer
compiled.phpがプロジェクト作成後に生成されるのは不具合でした。

Laravle v5.1で改善されました。コンポーザー経由でのプロジェクト作成、Laravelインストーラでのプロジェクト生成の両方で改善されています。

<https://github.com/laravel/laravel/commit/2ac993f8d369c0ca367accc93714ad960995f91e>  
<https://github.com/laravel/installer/commit/e93e688c914d535fc7a7fbbfddf0f80a426147c8>

なお、Laravelインストーラはv1.2.1にUpdateする必要があります。

```

    $ composer global update
    $ laravel -V
    Laravel Installer version 1.2.1
    
```

また、v5.1からcompiled.phpの出力先が、bootstrap/cache/compile.phpに変更になりました。
CC BY-SA 3.0
2015-06-09T21:03:32.547
11194
2015-06-10T17:01:01.503
2015-06-10T17:01:01.503
9529
9529
10343
answer