一次偶然的機會 讓我看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));
打印結果
看到沒 儘管我語法上沒有任何錯誤 ,都返回假。說明需要先引入類文件。