首頁 > 後端開發 > php教程 > 如何從擴充 PHP 類別中的靜態方法呼叫中檢索類別名稱?

如何從擴充 PHP 類別中的靜態方法呼叫中檢索類別名稱?

Mary-Kate Olsen
發布: 2024-10-30 21:53:30
原創
930 人瀏覽過

How to retrieve the class name from a static method call in extended PHP classes?

從擴展PHP 類別中的靜態呼叫中檢索類別名稱

在PHP 世界中,經常需要從靜態中確定類別名稱函數調用,尤其是在使用擴展類別時。考慮以下場景:

<code class="php">class Action {
    function n() {/* some implementation */}
}

class MyAction extends Action {/* further implementation */}</code>
登入後複製

在這種情況下,呼叫 MyAction::n();應該傳回「MyAction」作為類別名稱。但是, __CLASS__ 變數僅傳回父類別名稱(「Action」)。

晚期靜態綁定(PHP 5.3):

PHP 5.3 引入了晚期靜態綁定,這使得能夠在運行時解析目標類。此功能使得可以使用get_used_class() 函數來決定被呼叫的類別:

<code class="php">class Action {
    public static function n() {
        return get_called_class();
    }
}

class MyAction extends Action {

}

echo MyAction::n(); // Output: MyAction</code>
登入後複製

替代方法(PHP 5.3 之前):

PHP 之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前5.3,替代解決之前方案依賴於使用非靜態方法和get_class() 函數:

<code class="php">class Action {
    public function n(){
        return get_class($this);
    }
}

class MyAction extends Action {

}

$foo = new MyAction;

echo $foo->n(); // Output: MyAction</code>
登入後複製

記住,此方法只適用於非靜態方法,因為get_class() 函數需要一個實例類別作為參數。

以上是如何從擴充 PHP 類別中的靜態方法呼叫中檢索類別名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板