PHP 5 0物件模型深度探索之屬性和方法

2022-04-08 03:43:04 字數 1234 閱讀 2916

乙個物件例項的屬性是變數,就像php的其他變數一樣。但是你必須使用->運算子來引用它們。不需要在屬性前使用美元符$。

可以聯用->,如果乙個物件的屬性包含了乙個物件,你可以使用兩個->運算子來得到內部物件的屬性. 你甚至可以用雙重引用的字串來放置這些表示式. 下面的例子中,物件house中的屬性room包含了一組room物件。

訪問方法和訪問屬性類似。->運算子用來指向例項的方法. 在下面的中呼叫getlastlogin就是。方法執行起來和類外的函式幾乎相同.

如果乙個類從另一類中繼承而來,父類中的屬性和方法將在子類中都有效,即使在子類中沒有宣告. 像以前提到過的,繼承是非常強大的. 如果你想訪問乙個繼承的屬性,你只需要像訪問基類自己的屬性那樣引用即可,使用::運算子.

class room }

class house

//create empty house

$home = new house;

//add some rooms

$home->room = new room("bedroom");

$home->room = new room("kitchen");

$home->room = new room("bathroom");

//show the first room of the house

print($home->room[0]->name);

?>   php有兩個特殊的命名空間:parent命名空間指向父類,self命名空間指向當前的類。下面的例子中顯示了如何用parent命名空間來呼叫父類中的建構函式. 同時也用self來在建構函式中呼叫另乙個類方法。

class animal //動物

} } class mammal extends animal //哺乳動物 }

class dog extends mammal

function bark()

} $d = new dog("black and tan", "angus");

?>   對於物件的成員來是這樣呼叫的:如果你需要在執行時確定變數的名稱,你可以用$this->$property這樣的表示式。 如果你想呼叫方法,可以用$obj->$method()。

你也可以用->運算子來返回乙個函式的值,這在php以前的版本中是不允許的。例如,你可以寫乙個像這樣的表示式: $obj->getobject()->callmethod()。這樣避免了使用乙個中間變數,也有助於實現某些設計模式,如factory模式。

PHP 5 0物件模型深度探索之繫結

除了限制訪問,訪問方式也決定哪個方法將被子類呼叫或哪個屬性將被子類訪問.函式呼叫與函式本身的關聯,以及成員訪問與變數記憶體位址間的關係,稱為繫結。在計算機語言中有兩種主要的繫結方式 靜態繫結和動態繫結。靜態繫結發生於資料結構和資料結構間,程式執行之前.靜態繫結發生於編譯期,因此不能利用任何執行期的資...

PHP 5 0物件模型深度探索之構造和析構

如果你在乙個類中宣告乙個函式,命名為 construct,這個函式將被當成是乙個建構函式並在建立乙個物件例項時被執行。清楚地說,是兩個下劃線。就像其它任何函式一樣,建構函式可能有引數或者預設值.你可以定義乙個類來建立乙個物件並將其屬性全放在乙個語句 statement 中。你也可以定義乙個名為 de...

PHP5 0物件模型深度探索之類的靜態成員

類的靜態成員與一般的類成員不同 靜態成員與物件的例項無關,只與類本身有關。他們用來實現類要封裝的功能和資料,但不包括特定物件的功能和資料,靜態成員包括靜態方法和靜態屬性。靜態屬性包含在類中要封裝的資料,可以由所有類的例項共享。實際上,除了屬於乙個固定的類並限制訪問方式外,類的靜態屬性非常類似於函式的...