ホームページ >バックエンド開発 >PHPチュートリアル >クラスメンバーのアクセスメソッドと権限_PHPチュートリアル

クラスメンバーのアクセスメソッドと権限_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:25:06991ブラウズ

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() にします。 ))

保護された (保護された) メンバーは、同じクラス内のすべてのメソッド、およびアクセスされる継承されたクラス内で所有できます。メソッドはこの問題を引き起こしません。保護されたメソッドを使用するサブクラスは、親クラスの構造を明確にする必要があります。ウィジェットのインスタンスが getName という名前の保護されたメソッドを持っていることに注意してください。 $w1->getName() はエラーを生成しますが、サブクラス Thing の getName メソッドはこの protected メソッドを呼び出すことができます。もちろん、この例は単純すぎるため、Widget::getName が機能することを証明できません。実際の状況では、保護されたメソッドを使用するには、オブジェクトの内部構造を理解する必要があります。

<?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.html

www.bkjia.com

tru​​e
  1. http://www.bkjia.com/PHPjc/446721.html
技術記事
PHP5 のアクセス メソッドを使用すると、クラス メンバーへのアクセスを制限できます。これは PHP5 の新しい機能ですが、アクセス メソッドを使用すると、信頼性の高い...

を開発できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。