symfony的自动加载器是否足够聪明,只能加载必要的文件?

时间:2010-02-26 03:48:01

标签: autoload symfony-1.4

我知道symfony可以使用spl_auto_register自动加载文件,但它是否足够聪明?

如果只需加载 a.php ,它还会加载 b.php 吗?

2 个答案:

答案 0 :(得分:3)

自动加载器的工作原理是存储一组键值对,以便

classname => /full/path/to/class

在symfony 1.3 / 1.4中创建了两个缓存文件。一个用于核心类,由sfCoreAutoload创建,存储在 /cache/project.autoload 中。对于从项目目录中自动加载的类,键值对的数组存储在 / cache / _app _ / _ env_ / config / config_autoload.yml.php 中。该文件由配置处理程序sfAutoloadConfigHandler生成。

要记住一些有用的要点:

  • 并非项目中的所有类都是自动加载的,自动加载的文件由autoload.yml指定(在 sf_lib_dir / config / config 中)。您可以创建自己的autoload.yml并将其放入项目配置目录(或者我认为甚至是应用程序配置目录)。
  • 在开发环境中运行时,如果某个类无法自动加载,则symfony将重建自动加载缓存,希望找到其假设为新的文件。这可能会使您的应用在某些用例中变慢,因此请使用sfAutoloadAgain :: unregister()。

答案 1 :(得分:0)

自动加载器只会加载实例化请求类所需的文件。