使用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));


打印結果



看到沒  儘管我語法上沒有任何錯誤 ,都返回假。說明需要先引入類文件。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章