国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP static 關鍵字和 self 關鍵字實例化的區別

diabloneo / 2250人閱讀

摘要:實際上,關鍵字對該類所起的作用與對對象所起的作用并不完全相同。將關鍵字替換為關鍵字可得運行可得這樣可得到上述結論,關鍵字類似于關鍵字,但它指的是被調用的類而不是包含類。

在實例化時,static 關鍵字類似于 self 關鍵字,但 static 關鍵字指的是被調用的類,而 self 關鍵字指的是包含類。

這樣說可能不太好理解,接下來舉一個例子。

首先創建一個超類 DomainObject ,該類包含功能可被其擴展類共用,其次創建一個子類 Document 。

代碼如下:

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

class Document extends DomainObject {
}

Document::create();

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


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


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

將 self 關鍵字替換為 static 關鍵字可得:

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

class Document extends DomainObject {
}

Document::create();

運行可得:


Document Object
{
}


這樣可得到上述結論,static 關鍵字類似于 self 關鍵字,但它指的是被調用的類而不是包含類。在本例中,意思是調用Document::create()將生成一個新的 Document 對象,而不是試圖實例化一個 DomainObject 對象。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22645.html

相關文章

  • PHPself鍵字

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

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

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

    null1145 評論0 收藏0
  • PHP_OOP

    摘要:特殊在,方法被對象調用執行時,會自動確定是那個對象調用的該方法,會使用該對象為方法內的賦值構造析構類,沒有作用域,作用域,只是講,函數內和函數外。析構在對象消失對象被銷毀時,也會自動執行一個方法,稱之為析構方法。 相關定義 對象(object):現實生活中的實體,在編程語言中的體現。實體都有屬性和功能。一組數據,和操作管理這些數據的操作,定義在一起就形成了一個實體,稱之為對象。(屬性和...

    RiverLi 評論0 收藏0
  • PHP面試常考內容之面向對象(2)

    摘要:繼上一篇面試常考內容之面向對象發表后,今天更新,需要的可以直接點擊文字進行跳轉獲取。析構函數,當對象被銷毀時調用。 PHP面試專欄正式起更,每周一、三、五更新,提供最好最優質的PHP面試內容。繼上一篇PHP面試常考內容之面向對象(1)發表后,今天更新(2),需要(1)的可以直接點擊文字進行跳轉獲取。整個面向對象文章的結構涉及的內容模塊有: 一、面向對象與面向過程有什么區別?二、面向對...

    Barry_Ng 評論0 收藏0
  • 大話PHP設計模式之單例模式升級版

    摘要:用來指向已創建好的實例構造函數為空注意這里是關鍵這是我們需要調用的方法把函數也定義為空,這樣就大功告成啦。 接上一篇大話PHP設計模式之單例模式 這一篇介紹一下升級版的單例模式,廢話不說先上代碼 不完美的單例模式 class singleMode { //用來指向已創建好的實例 public static $instance; //判斷是...

    darcrand 評論0 收藏0

發表評論

0條評論

diabloneo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<