PHP __autoload() 函数用法及示例

PHP Class/Object 函数参考手册

__autoload() 函数尝试加载未定义的类

语法

__autoload ( string $class );

定义和说明

 你可以通过定义这个函数来启用类的自动加载。

参数

class - 必需。待加载的类名。

返回值

没有返回值。

在线示例

下面示例来说明__autoload 的使用方法,下面分别从 ClassA.php 和 ClassB.php 文件中加载 ClassA 和 ClassB 类

<?php
//定义一个类ClassA,文件名为ClassA.php
class ClassA{
 public function __construct(){
    echo "ClassA load success!";
 }
}
?>
<?php
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA
class ClassB extends ClassA {
 public function __construct(){
    echo "ClassB load success!";
 }
}
?>
<?php
function __autoload($classname)
{
     $classpath="./".$classname.'.php';
     if(file_exists($classpath)){
         require_once($classpath);
     }
     else{
        echo 'class file'.$classpath.'not found!';
     }
}
//ClassA类不存在时,自动调用__autoload()函数,传入参数”ClassA”
$obj = new ClassA();
//ClassB类不存在时,自动调用__autoload()函数,传入参数”ClassB”
$obj2 = new ClassB();
?>

在 PHP 5 中,可以定义一个 __autoload()函数,它会在试图使用尚未被定义的类时自动调用,通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类, __autoload() 函数接收的一个参数,就是你想加载的类的类名,所以你做项目时,在组织定义类的文件名时,需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形成文件名,比如 xxx_classname.php、classname_xxx.php以及就是classname.php等等。

PHP Class/Object 函数参考手册