首頁  >  文章  >  後端開發  >  php使用範圍解析操作符的範例詳解

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

黄舟
黄舟原創
2017-07-02 11:42:181132瀏覽

物件導向程式設計中會使用到一些它自己的運算子,如->,這個符號用來在物件中存取它自己的成員。另外一個是範圍解析運算子:兩個冒號連在一起(::)。這個符號用於在類別中(而不是物件中)存取成員。使用方式如下:

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();

?>


執行結果:


#

以上是php使用範圍解析操作符的範例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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