この記事では、PHP5 オブジェクト指向 - (10) __set() __get() __isset() __unset() の 4 つのメソッドについて簡単に紹介します。
__set() __get() __isset() __unset() 4つのメソッドの応用
一般に、クラス属性は常にプライベートとして定義します。これは、より現実的なロジックに沿ったものです。ただし、属性の読み取りと割り当ての操作は非常に頻繁に行われるため、PHP5 では、属性の取得と割り当てを行う関数「__get()」と「__set()」、および属性を確認する関数「__isset()」があらかじめ定義されています。属性を削除するメソッド「__unset()」。
前のセクションでは、各属性の設定および取得メソッドを説明しました。PHP5 には、属性の値を設定および取得するための特別なメソッド「__set()」および「__get()」メソッドが用意されています。デフォルトで存在しますが、コンストラクター メソッド (__construct()) と同様に、これら 2 つのメソッドは次の方法で追加する場合にのみ存在します。自分のスタイルに合わせて追加することもできます:
コードは次のとおりです | コードをコピー | ||||||||||||
If(isset($this->$property_name)) {
$this->$property_name = $value; get() メソッド: このメソッドは、プライベート メンバー属性値を取得するために使用されます。パラメーターは、取得するメンバー属性の名前で渡され、取得された属性値が返されます。手動で呼び出す必要はありません。プライベート プロパティを直接取得するときに自動的に呼び出されます。 private プロパティはカプセル化されているため、値を直接取得することはできません (例: "echo $p1->name" を直接取得するのは誤りです)。ただし、このメソッドをクラスに追加する場合は、「 echo $p1->name" は値を直接取得し、自動的に __get($property_name) メソッドを呼び出し、プロパティ名をパラメータ $property_name に渡します。このメソッドの内部実行を通じて、渡したプライベート値は属性の値が返されます。 __set() メソッド: このメソッドは、プライベート メンバー属性の値を設定するために使用されます。最初のパラメーターは、値を設定する属性の名前です。2 番目のパラメーターは、必要な値です。属性に設定する戻り値はありません。このメソッドも手動で呼び出す必要はありません。同じプライベート属性値を直接設定するときに自動的に呼び出されます。 __set() メソッドが存在しない場合、これは許可されません。 this->name='zhangsan' とするとエラーになりますが、 __set($property_name, $value) メソッドをクラスに追加すると、プライベート プロパティ Pass に値を直接割り当てるときに自動的に呼び出されます。 $property_name に name などの属性を設定し、$value に代入する値 "zhangsan" を渡すことで、不正な値を渡さないようにすることもできます。このメソッドでの判定。コードは次のとおりです:
プログラム実行結果: 上記のコードに __get() メソッドと __set() メソッドが追加されていない場合、プライベート メンバーはクラス外で操作できないため、プログラムは間違った動作をします。また、上記のコードは自動的に __get() メソッドと __set() メソッドを呼び出して支援します。カプセル化されたプライベート メンバーに直接アクセスします。 __isset() メソッド: このメソッドを説明する前に、isset() 関数の応用を見てみましょう。 isset() は、変数がパラメータとして渡され、値が設定されているかどうかを判断するために使用されます。渡された変数が存在する場合は true、それ以外の場合は false が返されます。 それでは、オブジェクトの外部で「isset()」関数を使用して、オブジェクト内のメンバーが設定されているかどうかを判断する場合、それを使用できますか?オブジェクト内のメンバーがパブリックである場合、この関数を使用してメンバー属性を測定できますが、プライベートなメンバー属性はカプセル化されているため、この関数は機能しません。外部に露出します。つまり、オブジェクトの外部で「isset()」関数を使用して、プライベートメンバーのプロパティが設定されているかどうかを判断することはできないのでしょうか?はい、「__isset()」メソッドをクラスに追加するだけで済みます。オブジェクト内のプライベートメンバーが設定されているかどうかを判断するために「isset()」関数がクラスの外部で使用される場合、この関数は内部で自動的に呼び出されます。 「__isset()」メソッドはそのような操作を完了するのに役立ち、「__isset()」メソッドをプライベートにすることもできます。次のコードをクラスに追加するだけです:
これら 4 つのメソッドはすべてオブジェクトに追加され、オブジェクトの外部からオブジェクト内のプライベート プロパティの操作を完了するために必要なときに自動的に呼び出されます このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
function_exists() はカスタム関数を決定できません
Function test () {return true;} if (function_exists ('test')) {echo "テストは関数です";
から 2024-04-29 11:01:01
0
3
2166
Google Chromeのモバイル版を表示する方法
こんにちは、先生、Google Chrome をモバイル版に変更するにはどうすればよいですか?
から 2024-04-23 00:22:19
0
11
2315
親ウィンドウには出力がありません
document.onclick = function(){ window.opener.document.write('私は子ウィンドウの出力です');
から 2024-04-18 23:52:34
0
1
1828
関連トピック
詳細>
|