探討PHP中OO之靜態(tài)關(guān)鍵字以及類(lèi)常量的詳解
閑著沒(méi)事隨便找了點(diǎn)PHP的關(guān)于OO的點(diǎn)資料看看,訪問(wèn)控制修飾符,self,parent,const,static幾個(gè)關(guān)鍵字,箭頭操作符(書(shū)上也這么叫..即“->”),范圍解析操作符(即雙冒號(hào)“::”),不過(guò)覺(jué)得這個(gè)跟C#語(yǔ)言里的OO很多是一樣的,很容易理解不過(guò)還是看看理清PHP里的OO思路還是應(yīng)該的吧。
--------------------------------------------------------------------------------
聲明靜態(tài)的類(lèi)的成員和方法,使它不需要一個(gè)類(lèi)的實(shí)例.一個(gè)static成員的聲明不能通過(guò)一個(gè)類(lèi)對(duì)象的實(shí)例來(lái)訪問(wèn)(盡管一個(gè)靜態(tài)方法可以)。
靜態(tài)聲明必須在可見(jiàn)性聲明之后。為了兼容PHP 4,如果沒(méi)有可見(jiàn)性被聲明,那么成員和方法將被當(dāng)作是已經(jīng)聲明為public。
由于靜態(tài)方法可以調(diào)用非對(duì)象實(shí)例,偽變量$this不可以在聲明為靜態(tài)的方法中使用。
事實(shí)上static方法調(diào)用形式在編譯時(shí)被確定。當(dāng)使用必須要聲明的類(lèi)名時(shí),方法是完全標(biāo)識(shí)和無(wú)繼承規(guī)則的應(yīng)用。當(dāng)使用必須要聲明的類(lèi)名時(shí),這種方法就被完全確認(rèn),而且沒(méi)有使用繼承的規(guī)則。
如果self已經(jīng)被聲明,那么self就被當(dāng)前所屬的類(lèi)所解釋。也不適用與繼承規(guī)則。靜態(tài)屬性不能通過(guò)箭頭操作符->.訪問(wèn)非靜態(tài)方法,這將產(chǎn)生一個(gè)E_STRICT 級(jí)的警告。
<?php
class Foo
{ public static $my_static='foo';
public function staticValue(){ return self::$my_static; }
}
class Bar extends Foo
{ public function fooStatic(){ return parent::$my_static; }
}
print Foo::$my_static."/n";
$foo = new Foo();
print $foo->staticValue()."/n";
print $foo->my_static."/n";// Undefined "Property" my_static
// $foo::my_static is not possible
print Bar::$my_static."/n";
$bar = new Bar();
print $bar->fooStatic()."/n";
?>
//靜態(tài)方法實(shí)例(Static method example)
<?php
class Foo
{ public static function aStaticMethod() { }
}
Foo::aStaticMethod();
?>
可以在每個(gè)基類(lèi)中定義常量使它保持不變。在你不使用$符號(hào)去聲明或使用它時(shí),常量不同于普通變量。就象靜態(tài)成員,常量值不能通過(guò)對(duì)象的實(shí)例來(lái)訪問(wèn)(而應(yīng)使用$object::constant). 常量值必須是一個(gè)常量表達(dá)式,而不是一個(gè)變量,一個(gè)類(lèi)的成員,一個(gè)數(shù)學(xué)表達(dá)式或函數(shù)調(diào)用的結(jié)果。
<?php
class MyClass
{ const constant = 'constant value';
function showConstant() { echo self::constant."/n"; }
}
echo MyClass::constant."/n";
$class = new MyClass();
$class->showConstant();// echo $class::constant; is not allowed
?>
相關(guān)文章
PHP 5.0對(duì)象模型深度探索之類(lèi)的靜態(tài)成員
類(lèi)的靜態(tài)成員與一般的類(lèi)成員不同: 靜態(tài)成員與對(duì)象的實(shí)例無(wú)關(guān),只與類(lèi)本身有關(guān)。他們用來(lái)實(shí)現(xiàn)類(lèi)要封裝的功能和數(shù)據(jù),但不包括特定對(duì)象的功能和數(shù)據(jù),靜態(tài)成員包括靜態(tài)方法和靜態(tài)屬性。2008-03-03php精確的統(tǒng)計(jì)在線人數(shù)的方法
這篇文章主要介紹了php精確的統(tǒng)計(jì)在線人數(shù)的方法,需要的朋友可以參考下2015-10-10php使用ZipArchive提示Fatal error: Class ZipArchive not found in的
這篇文章主要介紹了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解決方法,是使用ZipArchive時(shí)經(jīng)常會(huì)遇到的問(wèn)題,需要的朋友可以參考下2014-11-11使用VisualStudio開(kāi)發(fā)php的圖文設(shè)置方法
早先在asp橫行的年代,php和asp一樣,大都都是html中夾雜代碼,說(shuō)實(shí)話,這時(shí)候IDE的確用處不是很大,倒是類(lèi)似于dw之類(lèi)的設(shè)計(jì)器甚為上手。2010-08-08php 實(shí)現(xiàn)賬號(hào)不能同時(shí)登陸的方法分析【當(dāng)其它地方登陸時(shí),當(dāng)前賬號(hào)失效】
這篇文章主要介紹了php 實(shí)現(xiàn)賬號(hào)不能同時(shí)登陸的方法,結(jié)合實(shí)例形式分析了PHP基于session實(shí)現(xiàn)當(dāng)其它地方登陸時(shí),當(dāng)前賬號(hào)失效的相關(guān)操作技巧,需要的朋友可以參考下2020-03-03PHP 使用header函數(shù)設(shè)置HTTP頭的示例解析 表頭
本篇文章是對(duì)PHP使用header函數(shù)設(shè)置HTTP頭的示例進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP使用CURL實(shí)現(xiàn)下載文件功能示例
這篇文章主要介紹了PHP使用CURL實(shí)現(xiàn)下載文件功能,結(jié)合具體實(shí)例形式分析了php基于curl的文件下載實(shí)現(xiàn)技巧,代碼注釋有詳細(xì)的功能說(shuō)明,并附帶了curl參數(shù)的功能講解,需要的朋友可以參考下2019-06-06