1. 程式人生 > >使用class_exists的注意點我提煉了一下

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


列印結果



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