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

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

本文實(shí)例講述了php中new static()與new self()的區(qū)別異同,相信對(duì)于大家學(xué)習(xí)php程序設(shè)計(jì)能夠帶來(lái)一定的幫助。

問(wèn)題的起因是本地搭建一個(gè)站。發(fā)現(xiàn)用php 5.2 搭建不起來(lái),站php代碼里面有很多5.3以上的部分,要求更改在5.2下能運(yùn)行。

改著改著發(fā)現(xiàn)了一個(gè)地方

return new static($val);

這尼瑪是神馬,只見(jiàn)過(guò)

return new self($val);

于是上網(wǎng)查了下,他們兩個(gè)的區(qū)別。

self - 就是這個(gè)類(lèi),是代碼段里面的這個(gè)類(lèi)。

static - php 5.3加進(jìn)來(lái)的只得是當(dāng)前這個(gè)類(lèi),有點(diǎn)像$this的意思,從堆內(nèi)存中提取出來(lái),訪問(wèn)的是當(dāng)前實(shí)例化的那個(gè)類(lèi),那么 static 代表的就是那個(gè)類(lèi)。

還是看看老外的專(zhuān)業(yè)解釋吧:

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

這個(gè)例子基本上一看就懂了吧。

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

其實(shí)也簡(jiǎn)單就是用 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"*/

感興趣的朋友可以動(dòng)手測(cè)試一下示例代碼,相信會(huì)有新的收獲!

php技術(shù)PHP中new static()與new self()的區(qū)別異同分析,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 中文字幕有码热在线视频 | 美女综合网 | 2021精品国内一区视频自线 | 国产精品成人免费综合 | 国产综合成人观看在线 | 全部免费69堂在线视频 | 日本欧美一区二区三区在线 | 国产成人精品免费视频大全办公室 | 国产真实乱子伦精品 | 亚洲图片校园另激情类小说 | 日韩精品123 | 天天拍夜夜拍高清视频 | 精品欧美一区二区vr在线观看 | 久久久久久久久久久大尺度免费视频 | www.欧美在线 | 青草国产在线 | 大伊人青草狠狠久久 | 精品国产高清在线看国产 | 亚洲黄区| 玖玖在线精品 | 国产91精品露脸国语对白 | 香蕉成人影院 | 国内自产拍自a免费毛片 | 亚洲第一区在线观看 | 中文一区| 免费黄色视屏 | 中文字幕第13亚洲另类 | 亚洲二区在线视频 | 日本一区二区视频 | 婷婷色在线播放 | 欧美aaaav免费大片 | 国内久久久久影院精品 | 国产福利影院在线观看 | 91在线综合| 色性综合| 国产三级国产精品国产普男人 | 亚洲欧美精品久久 | 狠狠色狠狠色很很综合很久久 | 成人在线第一页 | 日本高清一区二区三区不卡免费 | 亚洲乱人伦精品图片 |