PHP 中 class_exists() 函数会触发自动加载函数。class_exists()可以设置第二个参数为false禁止自动调用自动加载方法去加载类文件,该参数默认值为true。
PHP 自动加载可以方便实现类在调用时自动包含对应的类文件,定义自动加载函数,可以有以下两种方式:
- 直接定义一个名为 __autoload 的函数,类被调用的时候会自动触发这个函数,类名作为第一个参数传递给这个函数
- 使用 spl_autoload_register() 函数注册自动加载函数,可以注册多个自动加载函数。
如下例所示:
运行以后页面上打印出了 __autoload with class foo,由此可见 class_exists () 的调用触发了自动加载函数。
如果在自动加载函数中成功加载到了这个类文件,class_exists() 返回 true, if 代码块中的代码将不执行
如果没有加载到这个类文件(比如在 __autoload 中删除include所在行),class_exists() 返回 false, if 代码块将被执行
index.php
<?php
/* www.51-n.com */
function __autoload($class){
echo '__autoload with class '.$class.'<br />';
include 'foo.a.class.php';
}
if(!class_exists('foo')){
include 'foo.b.class.php';
}
?>
foo.a.class.php
<?php
echo 'foo.a.class.php';
class foo{
}
?>
foo.b.class.php
<?php
echo 'foo.b.class.php';
class foo{
}
?> |
|