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>";
}
}