《PHP編程:PHP中static關(guān)鍵字以及與self關(guān)鍵字的區(qū)別》要點(diǎn):
本文介紹了PHP編程:PHP中static關(guān)鍵字以及與self關(guān)鍵字的區(qū)別,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
概述PHP應(yīng)用
正在學(xué)習(xí)設(shè)計(jì)模式,之前有一篇文章關(guān)于單例模式的文章,重新讀了這篇文章,發(fā)現(xiàn)對(duì)static關(guān)鍵字掌握不是很牢靠,重新溫習(xí)一下.PHP應(yīng)用
static關(guān)鍵字PHP應(yīng)用
PHP手冊(cè)里對(duì)static關(guān)鍵字的介紹如下:
PHP應(yīng)用
代碼如下:
Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static cannot be accessed with an instantiated class object (though a static method can).
大體意思是,將類(lèi)的屬性和方法聲明為靜態(tài)以后,可以直接拜訪靜態(tài)屬性和方法,而不需要實(shí)例化對(duì)象.
PHP中靜態(tài)成員和方法的特性如下:PHP應(yīng)用
1.靜態(tài)成員不能通過(guò)類(lèi)的實(shí)例拜訪,但是靜態(tài)方法可以.
2.靜態(tài)成員不能通過(guò)->運(yùn)算符拜訪.
3.在靜態(tài)方法的作用域中,不能出現(xiàn)$this關(guān)鍵字,也就是說(shuō)不能在靜態(tài)方法中拜訪普通的成員變量.
4.靜態(tài)成員和方法,都可以通過(guò)類(lèi)名直接拜訪,而無(wú)需實(shí)例化對(duì)象.PHP應(yīng)用
遲綁定(Late Static Bindings)PHP應(yīng)用
下面的內(nèi)容摘自PHP手冊(cè):
PHP應(yīng)用
代碼如下:
自 PHP 5.3.0 起,PHP 增加了一個(gè)叫做后期靜態(tài)綁定的功能,用于在繼承范圍內(nèi)引用靜態(tài)調(diào)用的類(lèi).
準(zhǔn)確說(shuō),后期靜態(tài)綁定工作原理是存儲(chǔ)了在上一個(gè)“非轉(zhuǎn)發(fā)調(diào)用”(non-forwarding call)的類(lèi)名.當(dāng)進(jìn)行靜態(tài)辦法調(diào)用時(shí),該類(lèi)名即為明確指定的那個(gè)(通常在 :: 運(yùn)算符左側(cè)部分);當(dāng)進(jìn)行非靜態(tài)辦法調(diào)用時(shí),即為該對(duì)象所屬的類(lèi).所謂的“轉(zhuǎn)發(fā)調(diào)用”(forwarding call)指的是通過(guò)以下幾種方式進(jìn)行的靜態(tài)調(diào)用:self::,parent::,static:: 以及 forward_static_call().可用 get_called_class() 函數(shù)來(lái)得到被調(diào)用的辦法所在的類(lèi)名,static:: 則指出了其范圍.
對(duì)該特性的理解,可以參考下手冊(cè)中的例子
self vs staticPHP應(yīng)用
用一個(gè)demo來(lái)直接說(shuō)明self與static的區(qū)別.
self示例:
PHP應(yīng)用
代碼如下:
<?php
class Vehicle {
??? protected static $name = 'This is a Vehicle';
??? public static function what_vehicle() {
??????? echo get_called_class()."\n";???????????????
??????? echo self::$name;
??? }
}
class Sedan extends Vehicle {
??? protected static $name = 'This is a Sedan';
}
Sedan::what_vehicle();
程序輸出:
代碼如下:
Sedan
This is a Vehicle
static示例:
代碼如下:
<?php
class Vehicle {
??? protected static $name = 'This is a Vehicle';
??? public static function what_vehicle() {
??????? echo get_called_class()."\n";???????
??????? echo static::$name;
??? }
}
class Sedan extends Vehicle {
??? protected static $name = 'This is a Sedan';
}
Sedan::what_vehicle();
程序輸出:
PHP應(yīng)用
代碼如下:
Sedan
This is a Sedan
總結(jié)PHP應(yīng)用
看看上一篇文章,已經(jīng)一個(gè)多月沒(méi)更新過(guò)博客了,忙是一部分,主要的還是自己懈怠了,以后還得保持.這篇文章寫(xiě)的也有點(diǎn)沒(méi)感覺(jué).PHP應(yīng)用
《PHP編程:PHP中static關(guān)鍵字以及與self關(guān)鍵字的區(qū)別》是否對(duì)您有啟發(fā),歡迎查看更多與《PHP編程:PHP中static關(guān)鍵字以及與self關(guān)鍵字的區(qū)別》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/10000.html