ホームページ >バックエンド開発 >PHPチュートリアル >クラスメンバーのアクセスメソッドと権限_PHPチュートリアル
PHP5 のアクセス メソッドにより、クラス メンバーへのアクセスを制限できます。これは PHP5 の新しい機能ですが、このアクセス メソッドを使用してのみ、信頼性の高いオブジェクト指向アプリケーションを開発できます。再利用可能なオブジェクト指向クラス ライブラリを構築します。
C++ や Java と同様、PHP には public、private、protected の 3 つのアクセス メソッドがあり、指定しない場合はそのいずれかを使用できます。 access メソッド 、デフォルトのアクセス メソッドは public です。 static キーワードの前にアクセス メソッドを配置することで、静的メンバーのアクセス メソッドを指定することもできます。
public メンバーは、クラス Any の外部からアクセスできます。コードはパブリック プロパティを読み書きできます。PHP の以前のバージョンでは、すべてのメソッドとプロパティがパブリックであり、オブジェクトはきちんと構造化された配列のように見えました。
同様に、同じクラス内のメソッドのみが、親のプライベート メソッドを呼び出すことができます。 class.
クラス内のすべてのメンバーとクラスのインスタンスはプライベート メンバーにアクセスできることに注意してください。例 6.8 を参照してください。 = 演算子は同じクラスの 2 つのオブジェクトを比較します。オブジェクト インスタンスは一意の ID を持ちます。equals メソッドは名前と価格のみを比較します。Java と C ではすべてこのような操作が可能です。オブジェクト指向プログラミングに詳しくない方は、プライベート メンバーを使用する目的が何なのか疑問に思うかもしれません。この章の冒頭で説明したように、プライベート メンバーはデータのカプセル化に役立ちます。これらは、クラス外のコードからクラス内に隠すこともできます。また、データ構造外のコードが内部プロパティに直接アクセスできない場合でも、暗黙的な相関関係は存在しません。解決策は、パブリック メソッドのペアを使用することです。1 つは get (プロパティの値を取得)、もう 1 つは set (プロパティの値を設定) です。コンストラクターは、 の初期値も受け入れます。これにより、メソッドに渡される値を変更する機能も提供されます。例 6.8 では、コンストラクターが強制的に価格を float (floadval() にします。 ))
<?php class Widget { private $name; private $price; private $id; public function __construct($name, $price) { $this->name = $name; $this->price = floatval($price); $this->id = uniqid(); } //checks if two widgets are the same 检查两个widget是否相同 public function equals($widget) { return(($this->name == $widget->name)AND ($this->price == $widget->price)); } } $w1 = new Widget('Cog', 5.00); $w2 = new Widget('Cog', 5.00); $w3 = new Widget('Gear', 7.00); //TRUE if($w1->equals($w2)) { print("w1 and w2 are the same<br>n"); } //FALSE if($w1->equals($w3)) { print("w1 and w3 are the same<br>n"); } //FALSE, == includes id in comparison if($w1 == $w2) //不等,因为ID不同 { print("w1 and w2 are the same<br>n"); } ?>ただし、サブクラスは親クラスのメソッドをオーバーライドすることでアクセス方法を変更することができます。パブリック クラスのメンバーをオーバーライドする場合は、そのメンバーをサブクラスの public に残す必要があります。保護されたメンバーをオーバーライドしても、プライベート メンバーは現在のクラスでのみ表示されます。親クラスのプライベート メンバーと同じ名前のメンバーは、現在のクラスに元のメンバーとは異なるメンバーを作成するだけです。したがって、
キーワードを使用してプライベート メンバーをオーバーライドすることはできません。メンバー メソッドへのアクセスを制限します。サブクラスは、親クラスで Final とマークされたメソッドをオーバーライドできません。
http://www.bkjia.com/PHPjc/446721.htmlwww.bkjia.comtrue