質問: Laravel5で開発をしています。 プロジェクトを作成すると、自動的に`php artisan optimize`が実行され、`vender/compiled.php`が生成されます。 この状態だと、boot時に、`compiled.php`が優先して読み込まれ、自分が追記したサービスプロバイダの内容が読み込まれません。 その為、毎回、プロジェクト作成後に`compile.php`を削除しています。 この現象に気付いたきっかけは、`EventServiceProvider`にイベントハンドラの設定を追加したのに、ハンドラが発火されず、ハマったことです。 optimizeはパフォーマンスを上げる有効な手段ですが、デプロイ時に必要になるもので、開発時には必要ないと思っています。 そこで、質問です。 * `compiled.php`がプロジェクト作成後に生成される理由は何かあるでしょうか? * 毎回プロジェクト作成後に手動で`compiled.php`を削除しなくてすむ、回避方法はあるでしょうか? * 上記の私の認識に何か間違えはあるでしょうか?その為に招いている現象でしょうか?
回答: compiled.phpがプロジェクト作成後に生成されるのは不具合でした。 Laravle v5.1で改善されました。コンポーザー経由でのプロジェクト作成、Laravelインストーラでのプロジェクト生成の両方で改善されています。 なお、Laravelインストーラはv1.2.1にUpdateする必要があります。 ``` $ composer global update $ laravel -V Laravel Installer version 1.2.1 ``` また、v5.1からcompiled.phpの出力先が、bootstrap/cache/compile.phpに変更になりました。