首頁  >  文章  >  後端開發  >  phpOO靜態關鍵字及類別常數實例詳解

phpOO靜態關鍵字及類別常數實例詳解

伊谢尔伦
伊谢尔伦原創
2017-06-29 09:18:581041瀏覽

閒著沒事隨便找了點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=&#39;foo&#39;;
    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 = &#39;constant value&#39;;
    function showConstant() {   echo  self::constant."/n";   }
}
echo MyClass::constant."/n";
$class = new MyClass();
$class->showConstant();// echo $class::constant; is not allowed
?>

以上是phpOO靜態關鍵字及類別常數實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn