日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php中newself(),在php代码中新建对象用到的new self与new static有什么不同

發(fā)布時(shí)間:2023/12/20 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php中newself(),在php代码中新建对象用到的new self与new static有什么不同 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們?cè)谑褂胮hp代碼新建對(duì)象的時(shí)候,一般會(huì)用到new self與new static,那么它們?cè)谑褂玫臅r(shí)候區(qū)別在哪里?

先說說new static(),new static與new self一樣,在php代碼中,它是用來新建一個(gè)對(duì)象的.

那么他們之間的不同之處在哪里呢?

new static與new self之間的不同在于在于新創(chuàng)建的是同一個(gè)類的實(shí)例與不同類的實(shí)例.

如下面這段示例:

class newdx {

public function hqnewself() {

return new self();

}

public function hqnewstatic() {

return new static();

}

}

$newdx = new newdx();

echo get_class($newdx->hqnewself());

echo get_class($newdx->hqnewstatic());

?>

以上代碼通過使用php自帶的get_class()方法是來用于獲取指定實(shí)例所屬類名

運(yùn)行后可以得出,無論他們調(diào)用的是hqnewself()函數(shù),還是hqnewstatic()函數(shù),其結(jié)果都為newdx

然而當(dāng)我們繼續(xù)創(chuàng)建

class newcl1 extends newdx {

}

class newcl2 extends newdx {

}

$newcl1 = new newcl1();

$newcl2 = new newcl2();

echo get_class($newcl1->hqnewself());

echo get_class($newcl1->hqnewstatic());

echo get_class($newcl2->hqnewself());

echo get_class($newcl2->hqnewstatic());

以上代碼表示newdx類有兩個(gè)子類,由于newdx類的hqnewself()和hqnewstatic()是公共的,所以在子類中依舊繼承了這兩方法。

其運(yùn)行結(jié)果依次為newdx、newcl1、newdx、newcl2,無論是子類newcl1,還是子類newcl2,調(diào)用hqnewself()即new self()其返回的對(duì)象都是類newdx,而hqnewstatic()即 new static(),則返回了調(diào)用者子類的實(shí)例名稱.

他們的區(qū)別在類的繼承中才會(huì)顯示出來,當(dāng)它們沒有任何繼承,那么使用他們沒有什么區(qū)別。

new self()返回的實(shí)例都是同一個(gè)類的實(shí)例,而new static()則是由調(diào)用的子類決定的.

總結(jié)

以上是生活随笔為你收集整理的php中newself(),在php代码中新建对象用到的new self与new static有什么不同的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。