7.7.14 自動加載類__autoload()
在編寫面向對象程序時,常規做法是將每一個類保存為一個PHP源文件。當在一個PHP文件中需要調用一個類時很容易就可以找到,然后通過include(或require)把這個文件引入就可以了。不過有的時候,在項目中文件眾多,要一一將所需類的文件include進來,是一個很讓人頭疼的事。
PHP5提供了一個__autoload()來解決這個問題。當new實例化一個不存在的類時,則自動調用此函數“__autoload()”,并將類名作為參數傳入此函數。我可以使用這個實現類的自動加載。
在組織定義類的文件名時,需要按照一定的規則,最好以類名為中心,加上統一的前綴或后綴形成文件名:class_student.php 或 student_class.php 或 student.php
demo.class.php
<?php
class Demo {
function two() {
echo "222222222222222<br>";
}
}
hello.class.php
<?php
class Hello {
function three() {
echo "3333333333333333<br>";
}
}
test.class.php
<?php
class Test {
function one() {
echo "1111111111<br>";
}
}
test.php
<?php
/*
* 只要在這個腳本中, 需要加載類的時候(必須用到類名),就會自動調用這個方法。
*
*/
function __autoload($classname) {
echo $classname."<br>";
//Test test.class.php
include strtolower($classname).".class.php";
}
$t = new Test();
$t -> one();
$d = new Demo();
$d-> two();
$h = new Hello();
$h -> three();
World::four();
World::four();
World::four();
World::four();
World::four();
World::four();
world.class.php
<?php
class World {
static function four() {
echo "44444444444444<br>";
}
}