如何为Debug而优化你的开发环境

3.4 版本
维护中的版本

当你在本地机器上开发Symfony项目时,你应该使用dev环境(走的是app_dev.php前端控制器)。这个环境在配置上主要优化了以下两个方面:

  • 只要有东西出错(web debug toolbar,漂亮的报错页面,profiler分析器,...),给予开发者以精确反馈;

  • 部署项目时,保证生产环境无限接近开发环境,以避免问题。

禁用Bootstrap文件和Class缓存 

代 为了令生产环境尽可能的快,Symfony在你的缓存中创建了巨大的PHP文件,包含了每一次请求时你的项目所需的PHP类。但是,这种行为可能令你在除错时感到迷惑,因为相同的类可以在两个不同的地方找到:原始类文件,以及集结了很多类的大文件。

本文演示了你应如何调节这种缓存架构,以便你在对“包含了到Symfony类”的代码进行除错时,能够令其变得更加友好。

前端控制器app_dev.php在默认时执行以下代码:

1
2
3
4
5
6
7
8
9
// ...
 
$loader = require __DIR__.'/../app/autoload.php';
Debug::enable();
 
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
// ...

为了能更加愉快地除错,你可以禁止对全部PHP类缓存进行加载,通过删除对loadClassCache()的调用来实现:

1
2
3
4
5
6
7
8
// ...
 
$loader = require_once __DIR__.'/../app/autoload.php';
Debug::enable();
 
$kernel = new AppKernel('dev', true);
// $kernel->loadClassCache();
$request = Request::createFromGlobals();

如果你禁止了PHP缓存,不要忘了在除错环节之后,重新开启它。

有些IDE并不喜欢类文件被存放于不同位置这样一个事实。为了避免麻烦,你应该指定IDE忽略那些PHP缓存文件。

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)