return(NULL);
}
}
//__set() メソッドはプライベート プロパティを設定するために使用されます
private function __set($property_name, $value){
echo "プライベート プロパティ値を直接設定するときに呼び出されます。プライベート プロパティに値を割り当てるには、この __set() メソッドを使用します
";
$this->$property_name = $value;
}
}
$p1=new Person() ;
//プライベート プロパティに値を直接割り当てると、割り当てのために __set() メソッドが自動的に呼び出されます
$p1->name="Zhang San";
$p1->
$p1->age=20;
/ /プライベート属性の値を直接取得すると、__get() メソッドが自動的に呼び出され、
echo "Name:" の値が返されます。 $p1->名前."
";
echo "性別:". $p1->性別."
";
echo "年齢:".$p1->age."
";
?>
プログラムの実行結果:
プライベート属性の値を直接設定する場合、__set()メソッドが自動的に呼び出され、プライベート属性に値が割り当てられます。
プライベート属性値を直接設定する場合は、__set()メソッドが自動的に呼び出され、プライベート属性値が割り当てられます。
プライベート属性値を直接取得する場合は、__get()メソッドが自動的に呼び出されます。
名前: Zhang San
プライベート属性値を取得する場合、この__get()メソッドが自動的に呼び出されます
性別: 男性
プライベート属性値を直接取得する場合、この__get()メソッドが自動的に呼び出されます
年齢: 20歳
上記のコードの __get() メソッドと __set() メソッドを追加しない場合、プライベート メンバーはクラス外で操作できないため、プログラムは誤動作します。また、上記のコードは、__get() と __set メソッドを自動的に呼び出すことで直接役に立ちます。 () メソッド。カプセル化されたプライベート
メンバーへのアクセス。
__isset() メソッド: このメソッドを説明する前に、「isset()」関数の応用を見てみましょう。 isset() は、変数がパラメータとして設定されているかどうかを判断するために使用される関数です。渡された変数が存在する場合は true を返し、それ以外の場合は false を返します。
それでは、オブジェクトの外部で「isset()」関数を使用して、オブジェクト内のメンバーが設定されているかどうかを判断する場合、それを
使用できますか?オブジェクト内のメンバーがパブリックである場合、この関数を使用してメンバー属性を決定できます。その理由は、プライベートなメンバー属性がカプセル化されているためです。外側。それでは、オブジェクトの外部で「isset()」関数を使用して、プライベートメンバー属性が設定されているかどうかを判断することはできないのでしょうか?はい、「__isset()」メソッドをクラスに追加するだけで済みます。「isset()」関数をクラス外で使用して、オブジェクト内のプライベートメンバーが設定されているかどうかを判断すると、自動的に「__isset」が呼び出されます。クラス内の ()" メソッドは、このような操作を完了するのに役立ちます。"__isset()" メソッドをプライベートにすることもできます。次のコードをクラスに追加するだけです:
コードスニペット
コードをコピー
コードは次のとおりです:
private function __isset($nm){ echo "isset(クラス外で)を使用する場合関数は自動的に
"; return isset($this->$nm); }
__unset() メソッド: このメソッドを見る前に、最初に実行しましょう。 )" 関数。"unset()"
この関数の機能は、指定された変数を削除し、true を返すことです。パラメータは削除する変数です。オブジェクトの外部からオブジェクト内のメンバー属性を削除したい場合、「unset()」関数を使用できますか? オブジェクト内のメンバー属性がパブリックである場合、この関数を使用して削除できます。オブジェクトのメンバー属性を外部から削除します。オブジェクトのメンバー属性がプライベートである場合、この関数を使用してそれらを削除する権限はありません。ただし、同様に、「__unset. ()" メソッドをオブジェクトに追加すると、オブジェクトのプライベート メンバー プロパティをオブジェクトの外部で削除できます。 "__unset()" メソッドをオブジェクト
に追加した後、オブジェクトの外で "unset()" 関数を使用してオブジェクト内のプライベート
メンバー属性を削除すると、"__unset()" 関数が自動的に呼び出され、オブジェクトの内部のプライベートメンバー属性を削除する場合、このメソッドはクラス内でプライベートとして定義することもできます。次のコードをオブジェクトに追加するだけです:
コード スニペット
コードをコピー
コードは次のとおりです:
private function __unset($nm){
echo "クラス外で unset() 関数を使用する場合
"; プライベートメンバーを削除するときに自動的に呼び出されます;
unset($this->$nm);
}
完全な例を見てみましょう: コードスニペット
コードをコピー
コードは次のとおりです:
class person{
//以下は person のメンバー属性です
private $name //その人の名前
private $sex; //その人の性別
private $age;人の年齢
//__get() メソッドはプライベート プロパティを取得するために使用されます
private function __get($property_name){
if(isset($this->$property_name)){
return($this->$property_name) ;}else {
return(NULL);
}
}
}
//__set() メソッドはプライベート プロパティの設定に使用されます
private function __set($property_name, $value){
$this->$property_name = $value;
}
//__isset() メソッド
private function __isset($nm){
echo "isset() 関数がプライベート メンバーを決定すると、自動的に呼び出されます
return isset($this- >$nm);
}
//__unset() メソッド
private function __unset($nm){
echo "プライベート メンバーを削除するために unset() 関数が使用されると自動的に呼び出されます
"; unset($this-> ;$nm);
}
}
$p1=new Person();
$p1->name="これは人の名前です"
// isset( ) プライベートメンバーを決定する関数 __isset() メソッドはそれを完了するのに役立ち、戻り結果は true です
echo var_dump(isset($p1->name))."
"; ;name."
" ;
// unset() 関数を使用してプライベート メンバーを削除すると、タスクを完了して name プライベート属性を削除するために __unset() メソッドが自動的に呼び出されます
unset($p1 ->name);
//この行からの出力はありません
echo $p1->name?>
出力結果は次のようになります:
isset() 関数プライベートメンバーを測定するときに
bool(true) を呼び出します
これは人の名前です
クラス外で unset() 関数を使用するときに自動的に呼び出される 4 つのメソッド __set()、__get()、__isset()、および __unset()プライベート メンバーを削除するためのメソッドは、必要に応じてすべてオブジェクトに追加されます。
オブジェクト内部のオブジェクト外部のプライベート プロパティに対する操作を完了するために自動的に呼び出されます。
http://www.bkjia.com/PHPjc/320645.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/320645.html技術記事 10. 4 つのメソッドの適用 __set() __get() __isset() __unset() 一般に、クラスの属性は常にプライベートとして定義され、これはより現実的なロジックに沿っています。ただし、プロパティへの値の読み取りと代入は...