1. 程式人生 > >static延遲靜態繫結的機制研究

static延遲靜態繫結的機制研究

之前寫過一篇關於關鍵字static的具體說明,之後涉及到一個關聯到工廠方法的機制,也就是在PHP5.3之後實現的延遲靜態繫結,下面用例項進行逐步的講解

在說到延遲驚天繫結這個概念的時候,首先就要說明下這個概念的含義:

在官方的文件中給出的定義是:


其實做一個簡單的說明就是通過static關鍵字表示執行時最初呼叫的類來繞過限制額,而延遲靜態繫結的解析會一直到取得一個完全解析了的靜態呼叫為止,也就是說,在靜態呼叫中,::左邊部分指定的類名是什麼,就會呼叫什麼類,當進行非靜態方法呼叫的時候,就會呼叫該物件所屬的類

下面用幾個簡單是例子加深理解:


這個例子沒有什麼好說,就是對static的一個簡單應用,但是切記這裡不能用self,因為self指的不是上下文,而是解析上下文

接著看下面的例子:


這裡的輸出結果是A,因為self解析的是class B的父類class B,如果使用static呢?


這裡輸出的是B,這裡定義了一個靜態延遲繫結方法,直到B呼叫test的時候才執行原本定義的時候執行的方法。