spl_autoload_register — 注册给定的函数作为 __autoload 的实现
将函数注册到SPL __autoload函数队列中。如果该队列中的函数尚未激活,则激活它们。
如果在你的程序中已经实现了__autoload()函数,它必须显式注册到__autoload()队列中。因为spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoload_call()。
如果需要多条 autoload 函数,spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload() 只可以定义一次。
(PHP 5 >= 5.1.2, PHP 7)
核心实代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php class autoload { public static function load( $class name ) { $filename = "/home/user/class/".$classname."class.php"; if (file_exists($filename )) { require_once $filename ; } } } function __autoload( $class name ) { $filename = "/home/user/class/".$classname."class.php"; if (file_exists($filename )) { require_once $filename ; } }
spl_autoload_register( 'autoload::load' );
spl_autoload_register( '__autoload' ); $foo = new foo(); $foo ->bar(); ?>
|