一個物件實例的屬性是變數,就像PHP的其他變數一樣. 但是你必須使用->運算子來引用它們.不需要在屬性前使用美元符$. 例如, 6.1中列印User物件的name屬性那一行.
可以聯用->,如果一個物件的屬性包含了一個物件,你可以使用兩個->運算子來得到內部物件的屬性. 你甚至可以用雙重引用的字串來放置這些表達式. 看6.5中的例子,物件House中的屬性room包含了一組Room物件.
存取方法和存取屬性類似. ->運算子用來指向實例的方法. 在範例6.1中呼叫getLastLogin就是. 方法執行起來和類別外的函數幾乎相同.
如果一個類別從另一類別中繼承而來,父類別中的屬性和方法將在子類別中都有效,即使在子類別中沒有聲明. 像以前提到過的,繼承是非常強大的. 如果你想訪問一個繼承的屬性,你只需要像訪問基類自己的屬性那樣引用即可,使用::運算符.
class Room
{
public $name;
function __construct($name="unnamed")
{
$this->name = $name ;
}
}
class House
{
//array of rooms
public $room;
}
//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命名空間指向目前的類別。範例6.6中顯示如何用parent命名空間來呼叫父類別中的建構子. 同時也用self來在建構函數中呼叫另一個類別方法.
class Animal file://動物
{
public $blood; file://熱血or冷血屬性
public $name;
public function __construct($blood, $name=NULL)
{
$this->blood = $blood;
if($name)
{
$ this->name = $name;
}
}
}
class Mammal extends Animal file://哺乳動物
{
public $furColor; file:/ /皮毛顏色
public $legs;
function __construct($furColor, $legs, $name=NULL)
{
parent::__construct("warm", $name);
$this->furColor = $furColor;
$this->legs = $legs;
}
}
class Dog extends Mammal
{
class Dog extends Mammal
{
function🎜>function __construct($furColor, $name)
{
parent::__construct($furColor, 4, $name);
self::bark();
}
function bark()
{
print("$this->name says 'woof!'");
}
}
$d = new Dog(" Black and Tan", "Angus");