2010-02-26 94 views

回答

0

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

+0

你能证明吗? – user198729 2010-02-26 04:03:13

+0

我已经看过它的代码,并没有找到这样的逻辑。 – user198729 2010-02-26 05:16:10

+0

Symfony的自动加载器通过将类名映射到物理文件来工作。没有太多必要的逻辑。 – blockhead 2010-02-26 18:14:16

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 /配置/配置)。您可以创建自己的autoload.yml并将其放入项目配置目录(或者甚至应用程序配置目录我认为)。
  • 当在开发环境中运行时,如果一个类不能被自动加载,那么symfony会重建自动加载缓存,希望找到它假定是新的文件。这可以使你的应用程序在某些用例中变慢,所以使用sfAutoloadAgain :: unregister()。