一次偶然的机会 让我看tp源码的时候 我发现了class_exists的用法 其中有很多的细节需要大家知道。
这个函数 大家都知道是判断一个类是否被定义。
这是官网的说明 大家用的时候 可能都是这样
if(class_exists($class))
{
echo 3;
}
类似这种代码片段
第二个参数 大家也知道一下 就是默认真 ,表示是否执行autoload函数,我们一般关闭它。
要想让这个函数返回true必须满足2个条件
第一 你在调这个函数的时候,你在这之前必须inlcude这个类文件
第二 第一个参数你必须写上这个类的完全限定名 否则报错。
下面我举例说明
假设一个类是这样的
1.php
<?php
namespace Sp;
class smp{
}
调用的地方
<?php
require '1.php';
var_dump(class_exists('smp',false));
打印结果
返回false 说明咱这个参数给的不对。我需要给完全限定名去找
<?php
require '1.php';
var_dump(class_exists('Sp\smp',false));
打印结果
这样就对了。
还有一点就是 我们需要引入文件 ,我实验一小,我注释引用
<?php
//require '1.php';
var_dump(class_exists('Sp\smp',false));
打印结果
看到没 尽管我语法上没有任何错误 ,都返回假。说明需要先引入类文件。