一、__autoload 尝试加载未定义的类
void __autoload (string $class) $class 待加载的类名
没有返回值
在php.net 的tip中写到: 尽管__autoload 函数也能自动加载类和接口,但更建议使用spl_autoload_register()函数。spl_autoload_register提供了一种更加灵活的方式来实现类的自动加载(同一个应用中,可以支持任意数量的加载器,比如第三方库中的)。因此,不在建议使用__autoload()函数,在以后的版本中它可能会被弃用。
实例一:使用spl_autoload_register() 作为 __autoload()函数的替代
<?php // function __autoload($class) { // include 'classes/' . $class . '.class.php'; // } function my_autoloader($class) { include 'classes/' . $class . '.class.php'; } spl_autoload_register('my_autoloader'); // 或者,自 PHP 5.3.0 起可以使用一个匿名函数 spl_autoload_register(function ($class) { include 'classes/' . $class . '.class.php'; });
实例二:class未能加载的spl_autoload_register() 例子
<?php namespace Foobar; class Foo { static public function test($name){ print '['.$name.']'; } } //自PHP 5.3.0 起 spl_autoload_register(__NAMESPACE__.'\Foo::test'); new InexistentClass; ?>