转载:http://www.cnblogs.com/hi-bazinga/archive/2012/05/14/2499756.html
在使用PHP进行开发时,开发者往往将一个类存放在单独的一个文件中,便于使用和管理。
但是在PHP5之前,每次使用一个类时,需要先将该文件include或require进来,如果需要使用的类数量很多,那么需要写很多include或require语句,既麻烦又不便于维护。好在PHP5提供了一种lazy loading的机制,即autoload。
PHP5之前如果要使用class A:
require ('A.php'); $a = A();
PHP5中在试图使用未定义的类时会自动调用__autoload函数,可以通过编写__autoload函数让php自动加载类,而不必写一个长长的包含文件列表。
function __autoload($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } $a = new A();
当然,我们可以自定义__autoload加载类的规则。
此外,假如我们不想自动加载的时候调用__autoload,而是调用我们自己的函数(或者类方法),我们可以使用spl_autoload_register来注册我们自己的autoload函数。
function loader($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register('loader'); $a = new A();
类方法:
class Loader { public static function loadClass($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); $a = new A();