最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP new static 和 new self詳解

 更新時(shí)間:2017年02月19日 16:49:50   投稿:hebedich  
使用 self:: 或者 __CLASS__ 對(duì)當(dāng)前類的靜態(tài)引用,取決于定義當(dāng)前方法所在的類:使用 static:: 不再被解析為定義當(dāng)前方法所在的類,而是在實(shí)際運(yùn)行時(shí)計(jì)算的。也可以稱之為“靜態(tài)綁定”,因?yàn)樗梢杂糜冢ǖ幌抻冢╈o態(tài)方法的調(diào)用。

最近在一個(gè)視頻的評(píng)論被問到一個(gè)小問題:這里選擇用static 而不是self有特殊的考慮么?或者我們可以這樣轉(zhuǎn)換一下問題:

PHP 的 new static 和 new self 具體有什么?

其實(shí)這個(gè)來看一個(gè)例子應(yīng)該就很清晰了:

class Father {

 public static function getSelf() {
  return new self();
 }

 public static function getStatic() {
  return new static();
 }
}

class Son extends Father {}

echo get_class(Son::getSelf()); // Father
echo get_class(Son::getStatic()); // Son
echo get_class(Father::getSelf()); // Father
echo get_class(Father::getStatic()); // Father

這里面注意這一行 get_class(Son::getStatic()); 返回的是 Son 這個(gè) class,可以總結(jié)如下:

new self

1.self返回的是 new self 中關(guān)鍵字 new 所在的類中,比如這里例子的 :

public static function getSelf() {
  return new self(); // new 關(guān)鍵字在 Father 這里
 }

始終返回 Father。

new static

2.static 則上面的基礎(chǔ)上,更聰明一點(diǎn)點(diǎn):static 會(huì)返回執(zhí)行 new static() 的類,比如 Son 執(zhí)行 get_class(Son::getStatic()) 返回的是 Son, Father 執(zhí)行 get_class(Father::getStatic()) 返回的是 Father

而在沒有繼承的情況下,可以認(rèn)為 new selfnew static是返回相同的結(jié)果。

Tips: 可以用一個(gè)好的 IDE 來直接看注釋。比如 PhpStorm:

Happy Hacking

相關(guān)文章

最新評(píng)論

德阳市| 化州市| 诏安县| 宁晋县| 临澧县| 和龙市| 临潭县| 张北县| 辽源市| 神农架林区| 吐鲁番市| 祁门县| 荆门市| 奎屯市| 贡山| 夏河县| 玛纳斯县| 灵台县| 林芝县| 金川县| 济南市| 准格尔旗| 灵璧县| 宾川县| 连江县| 观塘区| 密山市| 彰化县| 宁陵县| 温泉县| 阿拉善右旗| 冷水江市| 五峰| 佛冈县| 广河县| 奈曼旗| 尉犁县| 绥芬河市| 南昌县| 临安市| 济源市|