從擴展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中文網其他相關文章!