0

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

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

4

2 回答 2

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()。
于 2010-03-09T09:38:04.833 回答
0

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

于 2010-02-26T03:56:14.273 回答