phpOO靜態關鍵字及類常量執行個體詳解

來源:互聯網
上載者:User
閑著沒事隨便找了點PHP的關於OO的點資料看看,存取控制修飾符,self,parent,const,static幾個關鍵字,箭頭操作符(書上也這麼叫..即“->”),範圍解析操作符(即雙冒號“::”),不過覺得這個跟C#語言裡的OO很多是一樣的,很容易理解不過還是看看理清PHP裡的OO思路還是應該的吧。

--------------------------------------------------------------------------------
聲明靜態類的成員和方法,使它不需要一個類的執行個體.一個static成員的聲明不能通過一個類對象的執行個體來訪問(儘管一個靜態方法可以)。
靜態聲明必須在可見度聲明之後。為了相容PHP 4,如果沒有可見度被聲明,那麼成員和方法將被當作是已經聲明為public。
由於靜態方法可以調用非對象執行個體,偽變數$this不可以在聲明為靜態方法中使用。
事實上static方法調用形式在編譯時間被確定。當使用必須要聲明的類名時,方法是完全標識和無繼承規則的應用。當使用必須要聲明的類名時,這種方法就被完全確認,而且沒有使用繼承的規則。
如果self已經被聲明,那麼self就被當前所屬的類所解釋。也不適用與繼承規則。靜態屬性不能通過箭頭操作符->.訪問非靜態方法,這將產生一個E_STRICT 級的警告。

代碼如下:

<?phpclass 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 possibleprint Bar::$my_static."/n";$bar = new Bar();print $bar->fooStatic()."/n";?>

代碼如下:

//靜態方法執行個體(Static method example) <?phpclass Foo{   public static function aStaticMethod() {    }}Foo::aStaticMethod();?>

可以在每個基類中定義常量使它保持不變。在你不使用$符號去聲明或使用它時,常量不同於普通變數。就象靜態成員,常量值不能通過對象的執行個體來訪問(而應使用$object::constant). 常量值必須是一個常量運算式,而不是一個變數,一個類的成員,一個數學運算式或函數調用的結果。

<?phpclass 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?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.