成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP static 關(guān)鍵字和 self 關(guān)鍵字實(shí)例化的區(qū)別

diabloneo / 2255人閱讀

摘要:實(shí)際上,關(guān)鍵字對(duì)該類所起的作用與對(duì)對(duì)象所起的作用并不完全相同。將關(guān)鍵字替換為關(guān)鍵字可得運(yùn)行可得這樣可得到上述結(jié)論,關(guān)鍵字類似于關(guān)鍵字,但它指的是被調(diào)用的類而不是包含類。

在實(shí)例化時(shí),static 關(guān)鍵字類似于 self 關(guān)鍵字,但 static 關(guān)鍵字指的是被調(diào)用的類,而 self 關(guān)鍵字指的是包含類。

這樣說(shuō)可能不太好理解,接下來(lái)舉一個(gè)例子。

首先創(chuàng)建一個(gè)超類 DomainObject ,該類包含功能可被其擴(kuò)展類共用,其次創(chuàng)建一個(gè)子類 Document 。

代碼如下:

abstract class DomainObject {
    public static function create() {
        return new self();
    }
}

class Document extends DomainObject {
}

Document::create();

在示例代碼中,將常用方法 create() 放在父類中,并使用 self 關(guān)鍵字作為對(duì)該類的引用,這里其實(shí)是對(duì) self 關(guān)鍵字做的一個(gè)假設(shè)。實(shí)際上, self 關(guān)鍵字對(duì)該類所起的作用與 $this 對(duì)對(duì)象所起的作用并不完全相同。 self 關(guān)鍵字指的不是調(diào)用上下文,它指的是解析上下文。因此,運(yùn)行示例代碼可得:


PHP Fatal error: Cannot instantiate abstract class DomainObject in ...


由此可看出, self 關(guān)鍵字被解析為定義 create() 的 DomainObject ,而不是解析為調(diào)用 self 的 Document 類。

將 self 關(guān)鍵字替換為 static 關(guān)鍵字可得:

abstract class DomainObject {
    public static function create() {
        return new static();
    }
}

class Document extends DomainObject {
}

Document::create();

運(yùn)行可得:


Document Object
{
}


這樣可得到上述結(jié)論,static 關(guān)鍵字類似于 self 關(guān)鍵字,但它指的是被調(diào)用的類而不是包含類。在本例中,意思是調(diào)用Document::create()將生成一個(gè)新的 Document 對(duì)象,而不是試圖實(shí)例化一個(gè) DomainObject 對(duì)象。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22645.html

相關(guān)文章

  • PHPself關(guān)鍵字

    摘要:有了的靜態(tài)延遲綁定功能,可以在運(yùn)行時(shí)動(dòng)態(tài)確定歸屬的類。與是被討論最多,也是最容易引起誤用的組合。的用途看完與上述三個(gè)關(guān)鍵字的區(qū)別,的用途是不是呼之即出一句話總結(jié),那就是總是指向當(dāng)前類及類實(shí)例。 轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/self-in-php/ PHP群里有人詢問(wèn)self關(guān)鍵字的用法,答案是比較明顯的:靜態(tài)成員函數(shù)內(nèi)不能用this調(diào)用非成員函數(shù),但可以用...

    morgan 評(píng)論0 收藏0
  • PHP中的符號(hào) ->、=> :: 分別表示什么意思?以及this,self,pare

    摘要:定義屬性,包括一個(gè)靜態(tài)變量構(gòu)造函數(shù)使用來(lái)調(diào)用靜態(tài)變量使用調(diào)用必須使用域運(yùn)算符號(hào)打印最次數(shù)值實(shí)例化對(duì)象輸出我們這里只要注意兩個(gè)地方,第行和第行。我們知道是指向父類的指針,一般我們使用來(lái)調(diào)用父類的構(gòu)造函數(shù)。 一、->,=>和::的區(qū)別 ->前面的變量是一個(gè)對(duì)象: $user->friends_count 取對(duì)象的friends_count屬性。 $t->homeTimeline($p) 調(diào)...

    null1145 評(píng)論0 收藏0
  • PHP_OOP

    摘要:特殊在,方法被對(duì)象調(diào)用執(zhí)行時(shí),會(huì)自動(dòng)確定是那個(gè)對(duì)象調(diào)用的該方法,會(huì)使用該對(duì)象為方法內(nèi)的賦值構(gòu)造析構(gòu)類,沒(méi)有作用域,作用域,只是講,函數(shù)內(nèi)和函數(shù)外。析構(gòu)在對(duì)象消失對(duì)象被銷毀時(shí),也會(huì)自動(dòng)執(zhí)行一個(gè)方法,稱之為析構(gòu)方法。 相關(guān)定義 對(duì)象(object):現(xiàn)實(shí)生活中的實(shí)體,在編程語(yǔ)言中的體現(xiàn)。實(shí)體都有屬性和功能。一組數(shù)據(jù),和操作管理這些數(shù)據(jù)的操作,定義在一起就形成了一個(gè)實(shí)體,稱之為對(duì)象。(屬性和...

    RiverLi 評(píng)論0 收藏0
  • PHP面試常考內(nèi)容之面向?qū)ο螅?)

    摘要:繼上一篇面試??純?nèi)容之面向?qū)ο蟀l(fā)表后,今天更新,需要的可以直接點(diǎn)擊文字進(jìn)行跳轉(zhuǎn)獲取。析構(gòu)函數(shù),當(dāng)對(duì)象被銷毀時(shí)調(diào)用。 PHP面試專欄正式起更,每周一、三、五更新,提供最好最優(yōu)質(zhì)的PHP面試內(nèi)容。繼上一篇PHP面試??純?nèi)容之面向?qū)ο螅?)發(fā)表后,今天更新(2),需要(1)的可以直接點(diǎn)擊文字進(jìn)行跳轉(zhuǎn)獲取。整個(gè)面向?qū)ο笪恼碌慕Y(jié)構(gòu)涉及的內(nèi)容模塊有: 一、面向?qū)ο笈c面向過(guò)程有什么區(qū)別?二、面向?qū)?..

    Barry_Ng 評(píng)論0 收藏0
  • 大話PHP設(shè)計(jì)模式之單例模式升級(jí)版

    摘要:用來(lái)指向已創(chuàng)建好的實(shí)例構(gòu)造函數(shù)為空注意這里是關(guān)鍵這是我們需要調(diào)用的方法把函數(shù)也定義為空,這樣就大功告成啦。 接上一篇大話PHP設(shè)計(jì)模式之單例模式 這一篇介紹一下升級(jí)版的單例模式,廢話不說(shuō)先上代碼 不完美的單例模式 class singleMode { //用來(lái)指向已創(chuàng)建好的實(shí)例 public static $instance; //判斷是...

    darcrand 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<