PHP5 のアクセス メソッドを使用すると、クラス メンバーへのアクセスを制限できます。これは PHP5 の新機能ですが、アクセス メソッドを使用すると、信頼性の高いオブジェクト指向アプリケーションを開発し、再利用可能なオブジェクト指向クラス ライブラリを構築できます。 .
C や Java と同様、PHP には public、private、protected の 3 つのアクセス メソッドがあり、Access メソッドを指定しない場合は、そのいずれかを使用できます。アクセス メソッドは public です。静的メンバーのアクセス メソッドを指定し、そのアクセス メソッドを static キーワードの前に置くこともできます (
パブリック プロパティは、制限なくアクセスできます)。クラス外の任意のコードで記述され、スクリプト内のどこからでもパブリック メソッドを呼び出すことができます。PHP の以前のバージョンでは、すべてのメソッドとプロパティがパブリックであったため、オブジェクトは適切に構造化された配列のように感じられました。 >
プライベート (プライベート) メンバーはクラス内でのみ表示されます。プライベート プロパティの値を、それが配置されているクラス メソッドの外で変更したり読み取ったりすることはできません。同様に、同じクラス内のメソッド内でのみプライベート プロパティを呼び出すことができます。継承されたサブクラスは親クラスのプライベート メンバーにアクセスできません。例 6.8 を見ると、equals メソッドは 2 つのウィジェットを比較しています。 == 演算子は同じクラスの 2 つのオブジェクトを比較しますが、この例では、各オブジェクト インスタンスは名前と価格のみを比較します。 両方の Java ウィジェット インスタンスのプライベート プロパティにアクセスする方法。
リスト 6.8 プライベート メンバー
クラス ウィジェット
{
private $name;
private $price;
public function __construct($name, $price)
{
$this->name = $name;
$this->価格 = floatval($price);
$this->id = uniqid(); }
//2 つのウィジェットが同じかどうかをチェックします。 2 つのウィジェットが同じかどうかをチェックします。
public functionquals($widget)
{
return(($this->name == $widget) - >名前)AND
($this->価格 == $widget->価格));
}
}
$w1 = 新しいウィジェット('Cog', 5.00) ;
$w2 = 新しいウィジェット('歯車', 5.00);
//TRUE
if($w1- > ;equals($w2))
{
print("w1 と w2 は同じです
n")
}
//FALSE
if($ w1 ->equals($w3))
{
print("w1 と w3 は同じです
n")
}
//FALSE、== が含まれますid の比較
if($w1 == $w2) file:// は ID が異なるため等しくありません
{
print("w1 と w2 は同じです
n");
}
?>
サブクラスは、親クラスのメソッドをオーバーライドすることによってメソッドにアクセスする方法を変更できます。ただし、パブリック クラスのメンバーをオーバーライドする場合、そのメンバーはサブクラス内でパブリックのままである必要があります。 protected または public になるプライベート メンバーは、引き続き現在のクラスでのみ表示されます。親クラスのプライベート メンバーと同じ名前のメンバーを宣言すると、現在のクラスに別のメンバーが作成されるだけです。したがって、技術的には、プライベートをオーバーライドすることはできません。
Final キーワードは、メンバー メソッドへのアクセスを制限するもう 1 つの方法です。親クラスで Final とマークされたメソッドをオーバーライドすることはできません。
//haohappy 注: PHP5 のオブジェクト指向モデルはまだ完全ではありません。たとえば、Java のように、データ、メソッド、さらにはクラスに Final を使用することはできません。