许多开发者在编写向对象开发应用时都会习惯于每在一个php文件里放置一个类的定义, 烦恼在于每次编写代码前都将include一大堆的类定义文件
在php5版本里, 将不再如此麻烦, 可以通过定义 __autoload 函数来解决, 每次当你尝试使用一个未定义的类或接口时, 会自动调用此函数.
通过调用这个函数在开发过程中避免因加载不到类而产生报错.
这个例子尝试从MyClass1.php 和 Mclass2.php两个文件中分别加载MyClass1 和 MyClass2类
<?php
function __autoload($class_name) {
include $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
这个例子尝试去调用接口 ITest
<?php
function __autoload($name) {
var_dump($name);
}
class Foo implements ITest {
}
/*
string(5) "ITest"
Fatal error: Interface 'ITest' not found in ...
*/
?>
这个例子用try/catch来捕获错误
<?php
function __autoload($name) {
echo "Want to load $name.\n";
throw new Exception("Unable to load $name.");
}
try {
$obj = new NonLoadableClass();
} catch (Exception $e) {
echo $e->getMessage(), "\n";
}
?>
Want to load NonLoadableClass. Unable to load NonLoadableClass.