使用class_exists的注意點我提煉了一下
阿新 • • 發佈:2018-12-07
一次偶然的機會 讓我看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));
列印結果
看到沒 儘管我語法上沒有任何錯誤 ,都返回假。說明需要先引入類檔案。