static延遲靜態繫結的機制研究
之前寫過一篇關於關鍵字static的具體說明,之後涉及到一個關聯到工廠方法的機制,也就是在PHP5.3之後實現的延遲靜態繫結,下面用例項進行逐步的講解
在說到延遲驚天繫結這個概念的時候,首先就要說明下這個概念的含義:
在官方的文件中給出的定義是:
其實做一個簡單的說明就是通過static關鍵字表示執行時最初呼叫的類來繞過限制額,而延遲靜態繫結的解析會一直到取得一個完全解析了的靜態呼叫為止,也就是說,在靜態呼叫中,::左邊部分指定的類名是什麼,就會呼叫什麼類,當進行非靜態方法呼叫的時候,就會呼叫該物件所屬的類
下面用幾個簡單是例子加深理解:
這個例子沒有什麼好說,就是對static的一個簡單應用,但是切記這裡不能用self,因為self指的不是上下文,而是解析上下文
接著看下面的例子:
這裡的輸出結果是A,因為self解析的是class B的父類class B,如果使用static呢?
這裡輸出的是B,這裡定義了一個靜態延遲繫結方法,直到B呼叫test的時候才執行原本定義的時候執行的方法。
相關推薦
static延遲靜態繫結的機制研究
之前寫過一篇關於關鍵字static的具體說明,之後涉及到一個關聯到工廠方法的機制,也就是在PHP5.3之後實現的延遲靜態繫結,下面用例項進行逐步的講解 在說到延遲驚天繫結這個概念的時候,首先就要說明下這個概念的含義: 在官方的文件中給出的定義是: 其實做一個簡單的說明就
php面對物件之延遲靜態繫結:static關鍵字
先看一段程式碼: abstract class domainObject{ static $name = 'domain'; public static function crea
【學習點滴-php】static關鍵字---延遲靜態繫結
首先是這樣一組程式碼: abstract class User{ } class Admin extends User{ private $group; public static function create(){ retur
php魔術常量;資料(變數)序列化/反序列化;魔術方法;static後期靜態繫結特性
與類有關的魔術常量: __CLASS__,:獲取其所在的類的類名。 __METHOD__:獲取其所在的方法的方法名。 class A{ function f1(){ echo __CLASS__; //輸出“A” echo __METHOD__; //輸出“f1”
php中後期靜態繫結(延遲靜態繫結)技術
定義一個父類 這就要用到後期靜態繫結的技術,所謂後期,是指靜態方法的呼叫者,只有在執行狀態下才進行動態繫結,使用關鍵字 static 來實現, 此時, static 就像一個變數,始終與當前的呼叫類是繫結的 class Father{ public static $money
PHP延遲靜態繫結
“後期繫結”的意思是說,static:: 不再被解析為定義當前方法所在的類,而是在實際執行時計算的。 也可以稱之為“靜態繫結”,因為它可以用於(但不限於)靜態方法的呼叫。 <?php class A { public static function who() { echo
php中“延遲靜態繫結”的使用
PHP的繼承模型中有一個存在已久的問題,那就是在父類中引用擴充套件類的最終狀態比較困難。我們來看一下程式碼清單5-11中的例子。 程式碼清單5-11 意想不到的繼承 1 <?php 2 3 class ParentBase { 4 5 static$property='Parent Value
PHP-學習筆記 延遲靜態繫結
<?php 使用場景 先來觀察以下程式碼: abstract class base { //do sth } class aClass extends base{ public static function create(){ return new aClass(
php5.3新特性之延遲靜態繫結
基於PHP版本: 5.3.5 PHP5.3 以後引入了延遲靜態繫結: static(關鍵字) 類似於 self(關鍵字) , 但它指向的是被呼叫的類(Document) 而不是包含類(DomainObject) , static 和 self 的區別: 主要的作用就
PHP學習——25 PHP面向物件(類的靜態繫結與延遲繫結技術:self,parent,static詳解)
<?php class Employee { public static $name = '湯姆'; public static $age = 22; public static $salary = 4000; public static function show() // 靜
Java方法的靜態繫結與動態繫結講解(向上轉型的執行機制詳解)
今天看設計模式-模板方法模式時發現一個實現父類呼叫子類方法的效果的程式碼,不理解其中的原理,然後詢問大佬之後,發現這原來是動態繫結的知識,所以惡補了一下。 package com.practice; /** * 父類呼叫子類的方法 * * @author li
php 靜態繫結中的static::與修飾符private,public,protected之間的關係
對於靜態繫結中的static::在此不多做解釋,我想用例項來證明,這個例子是來自官方文件: For example one: class A{ private function
php 後期靜態繫結 static 關鍵字的另一種用法
自 PHP 5.3.0 起,PHP 增加了一個叫做後期靜態繫結的功能,用於在繼承範圍內引用靜態呼叫的類。 雖然也可以呼叫非靜態方法,但是不會在執行時繫結。 static 不再只是簡單的靜態修飾關鍵字。
PHP 中 parent、self、static、$this 的區別 & 後期靜態繫結詳解
開發十年,就只剩下這套架構體系了! >>>
在核心交換機上配置DHCP做靜態繫結嚴格限制地址分配
拓撲圖S5700作為核心裝置,配置DHCP,為辦公網路分配IP地址S2700作為接入裝置 S5700配置 vlan 100description bangong interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass
理解java的動態繫結 靜態繫結
在java中所有變數都是靜態繫結 在Java中方法只有static和final是靜態繫結,其餘全部是動態繫結 理解靜態繫結: 靜態繫結就是指在編譯時就已經確定是哪個類的物件呼叫的。 所以當出現一下語句時: Parent parent=new Parent(); P
深入理解Java動態繫結與靜態繫結
動態繫結 以下是我的理解,可能和其他大佬們的理解略有偏差,如有想法不同的或者有錯誤的地方歡迎您指出來,謝謝 先上程式碼: public class Father { public void f() { System.out.println("Father meth
javascript this繫結機制
1.查詢呼叫點:函式被呼叫的位置 大多數瀏覽器(Google)都內建開發者工具,其中就包含JS偵錯程式。為什麼要找函式的呼叫點?因為函式在呼叫點的呼叫形式決定了this繫結。 function foo(something) { //debugger; co
PHP的後期靜態繫結
參考:https://blog.csdn.net/lamp_yang_3533/article/details/79912453 1.定義 後期靜態繫結(也叫延遲靜態繫結),可用於在繼承範圍內引用靜態呼叫的類 2.工作原理 static 後期靜態繫結的工作原理是儲存了上一個非轉發呼叫(
Java中的靜態繫結與動態繫結事例
在這個例子中使用Java面向物件中的多型來簡單介紹靜態繫結和動態繫結的區別。 /* * 建立一個Father類。 * 為了方便獲取,成員變數a設定為public的。 * */ class Father{ public int a = 10; public void saying(