做项目时发现框架冲突导致 `__autoload()` 失效,用 `spl_autoload_register()` 重构一下,问题解决。 `__autoload()`的用法就不再说了,以前已经在我的WEB开发笔记中说过。PHP `__autoload` 函数(自动载入类文件)的使用方法。 说一说,`spl_autoload_register()`的用法吧,很简单,可以这样理解,就是声明一个自定义__autoload(),你可以是A函数,也可以是B函数,想怎么样就怎么样,函数体的写法,当然要和__autoload()一样就OK 了。 当PHP找不到类文件会调用这个方法,当注册了自己的函数或方法时,PHP不会调用__autoload()函数,而会调用自定义的函数 spl_autoload_register(‘func_name'); spl_autoload_register(array(‘class_name','method_name')); 详细说明如下: spl_autoload_register (PHP 5>= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明 bool spl_autoload_register ([ callback $autoload_function ] ) 将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。 如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为spl_autoload_register()函数会将Zend Engine中__autoload函数取代为spl_autoload()或 spl_autoload_call()。 参数: autoload_function :欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数 spl_autoload()。 返回值 : 如果成功则返回 TRUE,失败则返回 FALSE。 注:SPL 是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。 SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。SPL有两个不同的函数 spl_autoload,spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。 代码如下: test.class.php load.php