PHP5针对编程新增加了许多激动人心的特性,__autoload()函数就是其中之一,注意,autoload前面的下划线是两个。 面向对象
这个函数最大的用处就是在实例化一个未明确定义的类时去寻找相应的文件并载入。举个例子:
<?php
$club = new Milan();
$club->show() ;
function __autoload($class_name) {
include(”$class_name.php”);
}
?>
上述文件保存为show.php。Milan类的定义文件Milan.php如下:
<?php
class Milan {
public function show() {
echo “Forza Milan!”;
}
}
?>
show.php中并没有明确的载入Milan.php文件,但是通过__autoload函数,在实例化Milan类的时候会自动把Milan.php包含进来。
我们把事情搞的复杂一点,修改Milan.php:
<?php
class Milan extends Club {
public show() {
echo $this->message;
}
}
?>
同时增加一个文件Club.php:
<?php
class Club {
public $message = “Forza Milan!”;
}
?>
Milan类继承自Club类,实例化Milan类的时候同样会自动载入Club.php。show.php运行的结果仍然是显示“Forza Milan!”。
可以想象,这个特性会给我们带来一些好处。一个复杂的web应用可能会由许许多多个封装好的类组成,一股脑地包含所有的类定义文件或者仔细地确定哪些文件应当被包含都会降低效率,__autoload则可以让我们充分地享受动态编程的好处
转自PHPCHINA博客