使用class_exists的注意点我提炼了一下

一次偶然的机会 让我看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));


打印结果



看到没  尽管我语法上没有任何错误 ,都返回假。说明需要先引入类文件。



猜你喜欢

转载自blog.csdn.net/dzyweer/article/details/79934995