2011-06-29 116 views
5
<?php 
class MyParent { 

    public static function tellSomething() { 
     return __CLASS__; 
    } 
} 

class MyChild extends MyParent { 

} 

echo MyChild::tellSomething(); 

上面的代碼回聲「MyParent」。我怎樣才能得到兒童班的名字 - 在這種情況下「MyChild」?如果有可能......如何從靜態子方法獲取類名稱

我只是簡單地需要知道哪個孩子正在調用繼承的方法。

+1

的可能重複[我怎樣才能從靜態調用在擴展PHP類的類名?](https://stackoverflow.com/questions/506705/how-can-i-get-the-classname-from-a-static-call-in-an-extended-php-class) – Theraot

回答

7

__CLASS__是一個僞常量,它總是指它定義的類。使用late-static-binding引入了函數get_called_class(),該函數在運行時解析類名。

class MyParent { 

    public static function tellSomething() { 
    return get_called_class(); 
    } 
} 

class MyChild extends MyParent { 

} 

echo MyChild::tellSomething(); 

(作爲旁註:通常方法不需要知道被他們稱爲類)

相關問題