面試被問到了,無奈,沒有答上來,特此總結一下。
使用self:: 或__CLASS__
對目前類別的靜態引用,取決於定義目前方法所在的類別:
使用static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為“靜態綁定”,因為它可以用於(但不限於)靜態方法的呼叫。
靜態綁定是PHP 5.3.0,增加的一個函數用於在繼承範圍內引用靜態呼叫的類別
簡單通俗的來說,
self就是寫在哪個類別裡面, 實際呼叫的就是這個類別.
static代表使用的這個類別, 就是你在父類別裡寫的static,然後被子類別覆蓋,使用的是子類別的方法或屬性
<?phpclass Person{ public static function name() { echo "111"; echo "<br />"; } public static function callself() { self::name(); } public static function callstatic() { static::name(); } }class Man extends Person{ public static function name() { echo "222"; echo "<br />"; } } Man::callself(); // output: 111Man::callstatic(); // output: 222?>#
以上是php中static與self兩者的差異詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!