一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP中new static()與new self()的區別異同分析

本文實例講述了php中new static()與new self()的區別異同,相信對于大家學習php程序設計能夠帶來一定的幫助。

問題的起因是本地搭建一個站。發現用php 5.2 搭建不起來,站php代碼里面有很多5.3以上的部分,要求更改在5.2下能運行。

改著改著發現了一個地方

return new static($val);

這尼瑪是神馬,只見過

return new self($val);

于是上網查了下,他們兩個的區別。

self - 就是這個類,是代碼段里面的這個類。

static - php 5.3加進來的只得是當前這個類,有點像$this的意思,從堆內存中提取出來,訪問的是當前實例化的那個類,那么 static 代表的就是那個類。

還是看看老外的專業解釋吧:

self refers to the same class whose method the new operation takes place in.

static in php 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.

In the following example, B inherits both methods from A. self is bound to A because it's defined in A's implementation of the first method, whereas static is bound to the called class (also see  get_called_class() ).

class A {  public static function get_self() {    return new self();  }  public static function get_static() {    return new static();  }}class B extends A {}echo get_class(B::get_self()); // Aecho get_class(B::get_static()); // Becho get_class(A::get_static()); // A

這個例子基本上一看就懂了吧。

原理了解了,但是問題還沒有解決,如何解決掉 return new static($val); 這個問題呢?

其實也簡單就是用 get_class($this); 代碼如下:

class A {  public function create1() {    $class = get_class($this);    return new $class();  }  public function create2() {    return new static();  }}class B extends A {}$b = new B();var_dump(get_class($b->create1()), get_class($b->create2()));/*The result string(1) "B"string(1) "B"*/

感興趣的朋友可以動手測試一下示例代碼,相信會有新的收獲!

php技術PHP中new static()與new self()的區別異同分析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 四房婷婷 | 一区二区不卡在线观看 | 日本青草视频 | 午夜影院日韩 | 加勒比高清 | 久久亚洲精品成人综合 | 性色a v 一区 | 99精品久久精品一区二区 | 国内精品免费麻豆网站91麻豆 | 国产成人啪精品视频免费网 | 亚洲玖玖| 久久91精品综合国产首页 | 91久久线看在观草草青青 | 黑人专区| 天天更新天天久久久更新影院 | 337p欧美| 欧美性与交视频在线观看 | 日产一一到六区麻豆 | 四虎在线视频免费观看 | 超级成人97碰碰碰免费 | 国产在线综合视频 | 国产精品成人观看视频免费 | 国产人成精品综合欧美成人 | 6080yy午夜不卡一二三区久久 | 中文字幕国产在线 | 91李宗精品72集在线观看 | 91视频观看免费 | 1区2区3区4区 | 亚洲国产精品久久 | 91精品导航在线网址免费 | 伊人成人久久 | 综合激情网站 | 久久精品免视看国产成人2021 | 夜夜影院未满十八勿进 | 国产精品高清一区二区三区 | 99久久精品免费看国产一区二区 | 欧美色综合网站 | 欧美zoosex | 4hu四虎最新免费地址 | 米奇狠狠干 | 亚洲一区二区在线 |