閒著沒事隨便找了點PHP的關於OO的點資料看看,訪問控制修飾符,self,parent,const,static幾個關鍵字,箭頭運算子(書上也這麼叫..即「->」),範圍解析運算子(即雙冒號「::」),不過覺得這個跟C#語言裡的OO很多是一樣的,很容易理解不過還是看看理清PHP裡的OO思路還是應該的吧。
----------------------------------------- ---------------------------------------
聲明靜態的類別的成員和方法,使它不需要一個類別的實例.一個static成員的宣告不能透過一個類別物件的實例來存取(儘管一個靜態方法可以)。
靜態宣告必須在可見性宣告之後。為了兼容PHP 4,如果沒有可見性被聲明,那麼成員和方法將被當作是已經聲明為public。
由於靜態方法可以呼叫非物件實例,偽變數$this不可以在宣告為靜態的方法中使用。
事實上static方法呼叫形式在編譯時被決定。當使用必須要宣告的類別名稱時,方法是完全標識和無繼承規則的應用。當使用必須要宣告的類別名稱時,這種方法就被完全確認,而且沒有使用繼承的規則。
如果self已經被宣告,那麼self就被目前所屬的類別所解釋。也不適用與繼承規則。靜態屬性不能透過箭頭運算元->.存取非靜態方法,這將產生E_STRICT 等級的警告。
程式碼如下:
<?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"; ?>
程式碼如下:
//静态方法实例(Static method example) <?php class Foo { public static function aStaticMethod() { } } Foo::aStaticMethod(); ?>
可以在每個基底類別中定義常數使它保持不變。當你不使用$符號去宣告或使用它時,常數就不同於普通變數。就像靜態成員,常數值不能透過物件的實例來存取(而應使用$object::constant). 常數值必須是一個常數表達式,而不是一個變量,一個類別的成員,一個數學表達式或函數呼叫的結果。
<?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 ?>
以上是phpOO靜態關鍵字及類別常數實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!