spl_autoload_register()
允许您注册PHP将放入堆栈/队列中的多个函数(或您自己的Autoload类中的静态方法),并在声明“新类”时顺序调用。
因此,例如:
spl_autoload_register('myAutoloader');function myAutoloader($className){ $path = '/path/to/class/'; include $path.$className.'.php';}//-------------------------------------$myClass = new MyClass();在上面的示例中,“
MyClass”是您要实例化的类的名称,PHP将该名称作为字符串传递给
spl_autoload_register(),从而允许您选择变量并将其用于“包括”适当的类/文件。因此,您不需要特别通过include
/ require语句来包含该类。
就像上面的示例一样,只需简单地调用您想要实例化的类,并且由于您已经注册了
spl_autoload_register()自己的函数(通过),该函数可以确定所有类的位置,因此PHP将使用该函数。
使用的好处
spl_autoload_register()是,与
__autoload()您不同的是,您不需要在创建的每个文件中实现自动加载功能。
spl_autoload_register()还可以让您注册多个自动加载功能,以加快自动加载速度并使其变得更加容易。
例:
spl_autoload_register('MyAutoloader::ClassLoader');spl_autoload_register('MyAutoloader::LibraryLoader');spl_autoload_register('MyAutoloader::HelperLoader');spl_autoload_register('MyAutoloader::DatabaseLoader');class MyAutoloader{ public static function ClassLoader($className) { //your loading logic here } public static function LibraryLoader($className) { //your loading logic here }关于spl_autoload,手册指出:
此功能旨在用作的默认实现
__autoload()。如果未指定其他内容且spl_autoload_register()没有任何参数调用该函数,则此函数将用于以后对的任何调用__autoload()。
实际上,如果所有文件都位于一个目录中,并且您的应用程序不仅使用.php文件,而且还使用扩展名为.inc的自定义配置文件,那么您可以使用的一种策略是添加包含所有内容的目录文件到PHP的包含路径(通过
set_include_path())。
而且,由于还需要配置文件,因此将用于
spl_autoload_extensions()列出要PHP查找的扩展名。
例:
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/');spl_autoload_extensions('.php, .inc');spl_autoload_register();由于spl_autoload是
__autoload()magic方法的默认实现,因此当您尝试实例化新类时,PHP将调用spl_autoload。
希望这可以帮助…



