拇指良好的规则是手动包括你,你知道,肯定会被使用并保留类,可能所有类扫描文件夹用于自动加载器。例如,您可能有一个数据库库类,某些类型的设置类,国际化类,注册表类,接口定义类,某种类型的自定义异常类,模板引擎类以及导致实际控制器类将会被使用。
所以,你应该使用 包括$ file1.php 包括$ file2.php 等手动包括所有的人都非常接近你 index.php文件顶部(或任何文件首先由浏览器发起) ....
这会给你最好的性能和这些类保证由APC缓存(如果你使用的原因APC缓存)
现在你的类里面可能会有一些有条件地使用一个或其它一些逻辑类,视情况
例如
如果(请求:: isAjax()){ AjaxResponder :: sendResponse(); } else { return $ page; }
现在可以让自动加载器加载AjaxResponder类,因为它可能甚至不需要。所以,如果一个类可能不需要,让autoloader处理它,否则手动包含。
真的很简单的规则。
另外,在自动加载器功能中使用智能逻辑非常重要。确保 你有尽可能少的条件测试,也从来没有使用任何类型的目录扫描来查找类文件。
如果使用spl_autoload_register,请记住注意注册的自动加载函数的顺序。该命令如果重要。
智能自动加载类的一个很好的例子是在这里
http://groups.google.com/group/php-standards/web/psr-0-final-proposal
注意,它不使用任何检查,看是否(file_exists())之类的东西。 它仅使用 require()并依赖于require函数在找不到文件时引发错误。
切勿在自动加载器中使用include_once()或require_once。 这是没有意义的,因为自动加载器不会在类中被调用,但require_once和include_once仍然需要执行额外的检查来查看是否已包含文件。
的确,我正要写这个。 `__autoload()`不会加载所有的类,但只加载当前脚本中使用的类。这是一个非常好的做法*几乎总是被框架使用。 – Shikiryu 2011-02-01 13:25:22