デバッグするための開発環境に最適化する方法¶
ローカルマシーンで Symfony のプロジェクトを作る際には、 dev 環境を使用するべきです(app_dev.php フロントコントローラ)。この環境設定は、次の主な2つの目的に最適化されています。:
- 何か問題があった際に、開発者に正確なフィードバックを与えること(ウェブデバッグツールバー、例外ページ、プロファイラ)。
- プロジェクトをデプロイするときの問題を避けるために、本番環境に極力近づけること。
ブートストラップファイルとクラスキャッシュを無効にする¶
本番環境を極力速くするために、 Symfony はリクエスト毎にプロジェクトが必要とする PHP クラスの集合を含んだ大きな PHP ファイルをキャッシュに作成します。しかし、このキャッシュの使用によって IDE やデバッガを混乱させてしまうことがあります。この記事では、 Symfony のクラスを含むデバッグコードが必要な際に、より簡単にキャッシュのメカニズムを調整する方法を紹介します。
デフォルトでは、フロントコントローラの app_dev.php は次のようになっています。
// ...
require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
use Symfony\Component\HttpFoundation\Request;
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$kernel->handle(Request::createFromGlobals())->send();
デバッガをより充実させるために、次のように loadClassCache() メソッドを呼び、 require の一行を置き換えて、全ての PHP クラスキャッシュを無効にします。
// ...
// require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';
require_once __DIR__.'/../app/autoload.php';
require_once __DIR__.'/../app/AppKernel.php';
use Symfony\Component\HttpFoundation\Request;
$kernel = new AppKernel('dev', true);
// $kernel->loadClassCache();
$kernel->handle(Request::createFromGlobals())->send();
Tip
PHP キャッシュを無効にしたら、デバッグの後に元に戻すことを忘れないでください。
クラスのいくつかが、異なる場所に格納されていることを好まない IDE もあります。この問題を避けるために、 IDE に PHP キャッシュファイルを無視するように伝えるか、もしくは、次のように Symfony からエクステンションを変更してください。
$kernel->loadClassCache('classes', '.php.cache');