这是一个令人困惑的文件名称,因为自动加载是 PHP 中的一种机制,它允许您在需要时加载类,当您有很多类并且每次执行只需要少数类时,这是一个很好的解决方案。
例如:
function autoload($class_name) {
$file = "classes/$class_name.php";
// You could add some checks here (e.g. whether the file exists, whether the
// class indeed exists after the file is loaded) to facilitate better errors,
// of course this would marginally increase the time needed to load each class.
require $file;
}
// Register the `autoload` function with PHP's autoload mechanism
spl_autoload_register('autoload');
// This will execute `autoload('Class')` (unless `Class` is already defined)
$instance = new Class;
所以,回答你的问题:
没有必要全部加载它们,但是使用的类必须是可用的,或者通过一起加载它们(当前情况)、有条件地加载它们(if(p == 'whatever') require 'classes/whatever.php'
),或者通过使用自动加载。
每当包含文件时都会有一些延迟,因为必须解析/执行该文件。PHP 相当快,但包含不需要的文件仍然是一种浪费。如果您使用字节码缓存,则仍必须执行检索到的字节码。
这是改进的一种途径,自动加载提供了一种更动态的选择。
如果您的任何页面类依赖于另一个类,则依赖关系可能会成为问题,因为您的条件加载可能会变得非常臃肿。
如果您正在使用它,还有一些关于字节码缓存的附加材料:
总结似乎是,只要您使用include
或require
加载文件,字节码缓存就会按预期工作。