php使用範圍解析操作符的樣本詳解

來源:互聯網
上載者:User
物件導向編程中會使用到一些它自己的操作符,如->,這個符號用來在對象中訪問它自己的成員。另外一個是範圍解析操作符:兩個冒號連在一起(::)。這個符號用於在類中(而不是對象中)訪問成員。使用方式如下:

ClassName::methodName();ClassName::propertyName;


這種結構在兩個地方可能被用到:

1.在使用類的時候,父類和子類具有相同的屬性和方法時,利用它可以避免混淆。

2.在類外的時候,沒有建立對象的情況下使用該操作符訪問類的成員。

正如我們可以在一個類中使用$this來引用當前對象的執行個體,關鍵字self被用作當前類的一個引用。

class SomeClass {    function construct() {        self::do();    }    protected function do(){        echo "done!";    }}

在這段代碼中,self::do()會觸發當前類的do()方法。

要引用父類的一個成員,可以使用關鍵字parent和範圍解析操作符來引用:

class SomeOtherClass extends SomeClass {    function construct() {        parent::do();    }}


在多數情況下,我們使用範圍解析操作符是為了訪問被重寫的方法。我們也可以用其訪問靜態和常數成員。

註:類常數和靜態屬性一樣,它可以被類(或其子類)的全部執行個體訪問。但是它的值不可改變。建立類常數是使用const關鍵字,後面緊跟著常數名(沒有貨幣符號)。常數不可通過對象訪問,比如$obj->PI或者$obj::PI都是不行的,但是我們可以在任何地方使用ClassName::CONSTANT_NAME。也可以在類中的方法使用self::CONSTANT_NAME。

樣本程式:

<?php  class Rectangle {protected static $_count = 0;protected $width;protected $height;function construct($width, $height) {$this->width = $width;$this->height = $height;self::$_count++;echo "已成功建立".self::$_count."個Rectangle對象<br>";}function destruct() {echo "銷毀一個Rectangle對象<br>";}function getArea() {echo "Rectangle面積是:".($this->width * $this->height."<br>");}function getConunt() {return self::$_count;}}class Square extends Rectangle {function construct($side) {$this->width = $side;$this->height = $side;parent::$_count++;echo "已成功建立".parent::$_count."個Rectangle(Square)對象<br>";}}$rec = new Rectangle(10, 5);$rec->getArea();$square = new Square(10);$square->getArea();?>


運行結果:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.