今天老大在公司 問了一下 new static 和 new self 的區別 公司十個程序 竟然沒有一個回答上來 後面畫面自補 。。。
本屌絲回家後 就百度了解了下 這二者區別 :
使用 self:: 或者 __CLASS__ 對當前類的靜態引用,取決於定義當前方法所在的類:
使用 static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為“靜態綁定”,因為它可以用於(但不限於)靜態方法的調用。
簡單通俗的來說, self就是寫在哪個類裡面, 實際調用的就是這個類.所謂的後期靜態綁定, static代表使用的這個類, 就是你在父類裡寫的static,
然後通過子類直接/間接用到了這個static, 這個static指的就是這個子類, 所以說static和$this很像, 但是static可以用於靜態方法和屬性等.
請看列子
<?php class Person { public static function name() { echo "xiaosan"; } public static function callself() { self::name(); } public static function callstatic() { static::name(); } } class Man extends Person { public static function name() { echo "gaojin"; } } Man::name(); // output: gaojin Person::callself(); // output: xiaosan Person::callstatic(); // output:gaojin ?>
小編繼續學習中