找回密码
 注册

[PHP] PHP class_exists() 也会触发自动加载函数

php 发表于 2015/5/25 21:33 | 显示全部楼层 |阅读模式
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{

        }
?>

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表