今日は -> と組み合わせて使用できる について紹介します。オブジェクトのプロパティにオブジェクトが含まれている場合、2 つの -> 演算子を使用して内部オブジェクトのプロパティを取得できます。 これらの式を二重引用符で囲んだ文字列内に置くこともできます。 次の例では、オブジェクト House 内のプロパティの部屋に一連の Room オブジェクトが含まれています。
アクセスメソッドはアクセスプロパティに似ています。 -> 演算子は、インスタンスのメソッドを指すために使用されます。 以下の getLastLogin を呼び出すだけです。メソッドは、クラス外の関数とほぼ同じように実行されます。
クラスが別のクラスから継承する場合、親クラスのプロパティとメソッドは、サブクラスで宣言されていない場合でも、サブクラスで有効になります。 前述したように、継承は非常に強力です。 継承されたプロパティにアクセスする場合は、基本クラス独自のプロパティにアクセスする場合と同じように、:: 演算子を使用してそのプロパティを参照するだけです。
<ol class="dp-xml"> <li class="alt"><span><span>class Room </span></span></li> <li class=""><span>{ </span></li> <li class="alt"><span> public $name; </span></li> <li class=""><span> </span></li> <li class="alt"> <span> function __construct($</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"unnamed"</font></span><span>) </span> </li> <li class=""><span> { </span></li> <li class="alt"> <span>$this-></span><span class="attribute"><font color="#ff0000">name</font></span><span> = $name; </span> </li> <li class=""><span> } </span></li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"><span>class House </span></li> <li class=""><span>{ </span></li> <li class="alt"><span> //array(促销产品 主营产品) of rooms </span></li> <li class=""><span> public $room; </span></li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"><span>//create empty house </span></li> <li class=""> <span>$</span><span class="attribute"><font color="#ff0000">home</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> house; </span> </li> <li class="alt"><span> </span></li> <li class=""><span>//add some rooms </span></li> <li class="alt"><span>$home->room[] = new Room("bedroom"); </span></li> <li class=""><span>$home->room[] = new Room("kitchen"); </span></li> <li class="alt"><span>$home->room[] = new Room("bathroom"); </span></li> <li class=""><span> </span></li> <li class="alt"><span>//show the first room of the house </span></li> <li class=""><span>print($home->room[0]->name); </span></li> <li class="alt"><span>?> </span></li> </ol>
PHP5.0 オブジェクト モデルには 2 つの特別な名前空間があります。親名前空間は親クラスを指し、自己名前空間は現在のクラスを指します。次の例は、親名前空間を使用して親クラスのコンストラクターを呼び出す方法を示しています。 Self は、コンストラクターで別のクラス メソッドを呼び出すためにも使用されます。
<ol class="dp-xml"> <li class="alt"><span><span>class Animal //动物 </span></span></li> <li class=""><span>{ </span></li> <li class="alt"><span> public $blood; //热血or冷血属性 </span></li> <li class=""><span> public $name; </span></li> <li class="alt"> <span> public function __construct($blood, $</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">NULL</font></span><span>) </span> </li> <li class=""><span> { </span></li> <li class="alt"> <span>$this-></span><span class="attribute"><font color="#ff0000">blood</font></span><span> = $blood; </span> </li> <li class=""><span>if($name) </span></li> <li class="alt"><span>{ </span></li> <li class=""> <span> $this-></span><span class="attribute"><font color="#ff0000">name</font></span><span> = $name; </span> </li> <li class="alt"><span>} </span></li> <li class=""><span> } </span></li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"><span>class Mammal extends Animal //哺乳动物 </span></li> <li class=""><span>{ </span></li> <li class="alt"><span> public $furColor; //皮毛颜色 </span></li> <li class=""><span> public $legs; </span></li> <li class="alt"><span> </span></li> <li class=""> <span> function __construct($furColor, $legs, $</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">NULL</font></span><span>) </span> </li> <li class="alt"><span> { </span></li> <li class=""><span>parent::__construct("warm", $name); </span></li> <li class="alt"> <span>$this-></span><span class="attribute"><font color="#ff0000">furColor</font></span><span> = $furColor; </span> </li> <li class=""> <span>$this-></span><span class="attribute"><font color="#ff0000">legs</font></span><span> = $legs; </span> </li> <li class="alt"><span> } </span></li> <li class=""><span>} </span></li> <li class="alt"><span> </span></li> <li class=""><span>class Dog extends Mammal </span></li> <li class="alt"><span>{ </span></li> <li class=""><span> function __construct($furColor, $name) </span></li> <li class="alt"><span> { </span></li> <li class=""><span>parent::__construct($furColor, 4, $name); </span></li> <li class="alt"><span> </span></li> <li class=""><span>self::bark(); </span></li> <li class="alt"><span> } </span></li> <li class=""><span> </span></li> <li class="alt"><span> function bark() </span></li> <li class=""><span> { </span></li> <li class="alt"><span>print("$this->name says 'woof!'"); </span></li> <li class=""><span> } </span></li> <li class="alt"><span>} </span></li> <li class=""><span> </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">d</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">new</font></span><span> Dog("Black and Tan", "Angus"); </span> </li> <li class=""><span>?> </span></li> </ol>
オブジェクトのメンバーは次のように呼び出されます: 実行時に変数の名前を決定する必要がある場合は、$this->$Property のような式を使用できます。 メソッドを呼び出したい場合は、$obj->$method() を使用できます。
-> 演算子を使用して関数の値を返すこともできますが、これは PHP の以前のバージョンでは許可されていませんでした。たとえば、$obj->getObject()->callMethod() のように、PHP5.0 オブジェクト モデルで式を作成できます。これにより、中間変数の使用が回避され、ファクトリ パターンなどの特定の設計パターンの実装にも役立ちます。