__set() メソッド: このメソッドは、プライベート メンバー属性の値を設定するために使用されます。最初のパラメーターは値を設定する属性の名前で、2 番目のパラメーターは値です。属性に設定したい戻り値はありません。このメソッドは手動で呼び出す必要はありません。プライベート属性値を直接設定するときに、__set() メソッドがカプセル化されていない場合は自動的に呼び出されます。許可されます。例: $this->name='zhangsan' の場合、エラーが発生しますが、クラスに __set($property_name, $value) メソッドを追加すると、プライベート プロパティに値を直接割り当てることができます。 .property.time が自動的に呼び出され、$property_name に name などの属性が渡され、$value に代入される値 "zhangsan" が渡されます。このメソッドの実行により、代入の目的は達成されます。メンバーのプロパティがプライベートとしてカプセル化されていない場合、オブジェクト自体はこのメソッドを自動的に呼び出しません。不正な値を渡さないように、このメソッドで判定することもできます。コードは次のとおりです:
//以下は、すべてカプセル化された person のメンバー属性です。 private members
private $name; //個人名
private $sex; //個人の性別
private $age; //個人のプロパティを取得するために __get() メソッドが使用されます
private function __get($property_name) )
{
echo "プライベート プロパティ値を取得するときに、__get() メソッドが自動的に呼び出されます
";
if(isset($this->$property_name))
{
return($this- >$property_name);
}
else
{
return(NULL);
}
}
//__set() メソッドはプライベート プロパティの設定に使用されます
private function __set($property_name, $value)
{
echo "プライベート プロパティの値を直接設定する場合、この __set() メソッドがプライベート プロパティに値を割り当てるために自動的に呼び出されます
";
$this->$property_name = $value; ();
//直接プライベート属性に値を割り当てる場合、__set() メソッドが自動的に呼び出され、値が割り当てられます
$p1->name="张三"; ="male";
$p1->age= 20;
//プライベート属性の値を直接取得すると、__get() メソッドが自動的に呼び出され、メンバー属性の値が返されます
echo "Name: " .$p1->名前."
";
echo " 性別: ".$p1->性別。"
";
echo "年齢: ".$p1->年齢。 "
;
プログラムの実行結果: プライベート属性の値を直接設定する場合、__set()メソッドが自動的に呼び出され、プライベート属性に値が割り当てられます。
プライベート属性の値を直接設定する場合、__set()メソッドが呼び出されます。プライベート属性の割り当て
プライベート属性値を直接設定する場合、__set() メソッドが自動的に呼び出され、プライベート属性値が割り当てられます
プライベート属性値を直接取得する場合、__get() メソッドが自動的に呼び出されます
名前: Zhang San
private 属性値を直接取得する場合、__get() メソッドが自動的に呼び出されます
性別: 男性
private 属性値を直接取得する場合、__get() メソッドが自動的に呼び出されます
年齢: 20 歳
上記のコードの場合__get() メソッドと __set() メソッドがないと、プライベート メンバーをクラスの外部で操作できないため、プログラムは正常に動作しません。また、上記のコードは、カプセル化されたプライベート メソッドに直接アクセスする __get() メソッドと __set() メソッドを自動的に呼び出すことで役に立ちます。メンバー。
http://www.bkjia.com/PHPjc/327357.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/327357.html技術記事一般に、php オブジェクト指向の _get() および _set() を使用すると、常にクラスの属性がプライベートとして定義され、これはより現実的なロジックに沿ったものになります。ただし、属性の読み取りと割り当ての操作は非常に頻繁に行われます...