/*
------------------------------------------- ----------------------------------
| この記事は Haohappy<
| = 章のクラスとオブジェクトのメモ
| = 不要なトラブルを避けるため、転載しないでください。批判や修正は大歓迎です。私たちはすべての PHP 愛好家とともに進歩していきたいと考えています。
= PHP5 Research Center: http://blog.csdn.net/haohappy2004
--------- ----- -------------------------------------- ----- ---------------
*/
セクション 8 - アクセスメソッド
PHP5 のアクセスメソッドでは、クラスメンバーへのアクセスを制限できます。 PHP5 の新機能ですが、多くのオブジェクト指向言語にすでに存在しています。アクセスを使用すると、信頼性の高いオブジェクト指向アプリケーションを開発し、再利用可能なオブジェクト指向クラス ライブラリを構築できます。
C や Java と同様、PHP には 3 つのアクセス メソッドがあります。 : public、private、protected クラス メンバーのアクセス メソッドは、そのいずれかを指定できます。アクセス メソッドを指定しない場合は、静的メンバーのアクセス メソッドを指定することもできます。 static キーワードの前のアクセス メソッド (public static など)。
パブリック メンバーは、制限なくアクセスできます。クラス外のコードは、スクリプト内のどこからでも呼び出すことができます。以前のバージョンの PHP では、すべてのメソッドとプロパティがパブリックであったため、オブジェクトは適切に構造化された配列のように感じられました。
プライベート メンバーはクラス内でのみ表示され、クラス外でプライベート プロパティの値を変更したり読み取ったりすることはできません。同様に、同じクラス内のメソッドのみがプライベート メソッドを呼び出すことができます。継承されたサブクラスは、親クラスのメンバーおよびクラスのインスタンスにアクセスできることに注意してください。例 6.8 を参照してください。equals メソッドは 2 つのウィジェットを比較します。== 演算子は同じクラスの 2 つのオブジェクトを比較します。ただし、この例では、各オブジェクト インスタンスは名前と価格のみを比較します。 equals メソッドは別の Widget インスタンスのプライベート プロパティにアクセスします。Java と C の両方でこのような操作が可能です。
リスト 6.8 プライベート メンバー
コードは次のとおりです。以下のように:
クラス ウィジェット
{
private $name;
プライベート $価格;
プライベート $id;
public function __construct($name, $price)
{
$this->name = $name;
$this->price = floatval($price);
$this->id = uniqid();
}
//2 つのウィジェットが同じであるかどうかを確認します 检查两个ウィジェットが同じであるかどうかを確認します
public function equals($widget)
{
return(($this->名前 == $widget->name)AND
($this->price == $widget->price));
}
}
$w1 = new Widget('Cog', 5.00);
$w2 = 新しい ウィジェット('Cog', 5.00);
$w3 = 新しい ウィジェット('ギア', 7.00);
//TRUE
if($w1->equals($w2))
{
print("w1 と w2 は 同じ
n");
}
//FALSE
if($w1->equals($w3))
{
print("w1 と w3 は 同じ
n");
}
//FALSE, == 比較にID が含まれます
if($w1 == $w2) //不等, ID が異なるため
{
print("w1 and w2同じ
n");
}
?>
复制代代码如下:
クラス ウィジェット
{
private $name;
プライベート $価格;
プライベート $id;
public function __construct($name, $price)
{
$this->name = $name;
$this->price = floatval($price);
$this->id = uniqid();
}
//2 つのウィジェットが同じであるかどうかを確認します
public function equals($widget)
{
return(($this->name == $widget->名前)AND
($this->price == $widget->price));
}
protected function getName()
{
return($this->name);
}
}
class Thing extends Widget
{
private $color;
public function setColor($color)
{
$this->color = $color;
}
public function getColor()
{
return($this->color);
}
public function getName()
{
return(parent::getName());
}
}
$w1 = new Widget('Cog', 5.00);
$w2 = 新しい Thing('Cog', 5.00);
$w2->setColor('Yellow');
//TRUE (まだ!) 结果仍然真
if($w1->equals($w2))
{
print("w1 と w2 は 同じ
n ");
}
//print Cog 出 Cog
print($w2->getName());
?>