PHP后期靜態(tài)綁定實(shí)例淺析
本文實(shí)例講述了PHP后期靜態(tài)綁定。分享給大家供大家參考,具體如下:
從php5.3開始,php增加了一個(gè)叫后期綁定的功能,用于在繼承范圍內(nèi)引用靜態(tài)調(diào)用的類
該功能從語(yǔ)言內(nèi)部角度考慮北命名為“后期靜態(tài)綁定”;“后期綁定”意思說:static::不再被解析為定義當(dāng)前方法所在的類,而是在實(shí)際運(yùn)行時(shí)計(jì)算的,也可以成為“靜態(tài)綁定”;因?yàn)樗梢杂糜冢ǖ幌抻陟o態(tài)方法的調(diào)用)。
self::的限制
使用self::或者_class_對(duì)當(dāng)前類的靜態(tài)引用,取決于定義當(dāng)前方法所在的類
例子:
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
self::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); //A
打印結(jié)果:
A
后期靜態(tài)綁定的用法
后期靜態(tài)綁定試圖通過引入一個(gè)關(guān)鍵字表示運(yùn)行時(shí)最初調(diào)用的類來繞過限制。簡(jiǎn)單的說,這個(gè)關(guān)鍵字能夠讓你在上述中調(diào)用test()時(shí)引用的類是B而不是A。最終決定不引用新的關(guān)鍵字,而是使用已經(jīng)預(yù)留static關(guān)鍵字
例子:
<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // 后期靜態(tài)綁定從這里開始
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();
?>
打印結(jié)果是:
B
后期靜態(tài)綁定的處理方式解決了以往完全沒有解決的靜態(tài)調(diào)用,另外一方面,如果靜態(tài)調(diào)用使用parent::或者self::將轉(zhuǎn)發(fā)調(diào)用信息
<?php
class A {
public static function foo() {
static::who();
}
public static function who() {
echo __CLASS__."\n";
}
}
class B extends A {
public static function test() {
A::foo();
parent::foo();
self::foo();
}
public static function who() {
echo __CLASS__."\n";
}
}
class C extends B {
public static function who() {
echo __CLASS__."\n";
}
}
C::test();
?>
打印結(jié)果:
A
C
C
例子:
<?php
class a {
static public function test() {
print get_called_class();
}
}
class b extends a {
}
a::test();
b::test();
?>
打印結(jié)果:
a
b
特別聲明:
get_called_class();獲得類的名稱靜態(tài)方法中調(diào)用
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP 日期時(shí)間函數(shù)的高級(jí)應(yīng)用技巧
PHP 日期時(shí)間函數(shù)常用函數(shù)高級(jí)使用技巧,大家在以后的開發(fā)中能用的到。2009-10-10
php集成套件服務(wù)器xampp安裝使用教程(適合第一次玩PHP的新手)
這篇文章主要介紹了php集成套件服務(wù)器xampp安裝使用教程(適合第一次玩PHP的新手),本文也是學(xué)習(xí)PHP語(yǔ)言的第一個(gè)程序:helloworld,需要的朋友可以參考下2015-06-06
PHP中的淺復(fù)制與深復(fù)制的實(shí)例詳解
這篇文章主要介紹了PHP中的淺復(fù)制與深復(fù)制的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
PHP7下協(xié)程的實(shí)現(xiàn)方法詳解
最近在學(xué)習(xí)中遇到了協(xié)程,發(fā)現(xiàn)這類文章介紹的較少,所以下面這篇文章主要給大家介紹了關(guān)于PHP7下協(xié)程的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
PHP+JavaScript實(shí)現(xiàn)無刷新上傳圖片
本文主要介紹了PHP+JavaScript實(shí)現(xiàn)無刷新上傳圖片的方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
php網(wǎng)站來路獲取代碼(針對(duì)搜索引擎)
獲取網(wǎng)站來路(針對(duì)搜索引擎)2010-06-06

