ホームページ  >  記事  >  バックエンド開発  >  PHP5オブジェクト指向の詳しい解説 - (10) __set() __get() __isset() __unset() 4つのメソッド_PHPチュートリアル

PHP5オブジェクト指向の詳しい解説 - (10) __set() __get() __isset() __unset() 4つのメソッド_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:13:17836ブラウズ

この記事では、PHP5 オブジェクト指向 - (10) __set() __get() __isset() __unset() の 4 つのメソッドについて簡単に紹介します。

__set() __get() __isset() __unset() 4つのメソッドの応用
一般に、クラス属性は常にプライベートとして定義します。これは、より現実的なロジックに沿ったものです。ただし、属性の読み取りと割り当ての操作は非常に頻繁に行われるため、PHP5 では、属性の取得と割り当てを行う関数「__get()」と「__set()」、および属性を確認する関数「__isset()」があらかじめ定義されています。属性を削除するメソッド「__unset()」。

前のセクションでは、各属性の設定および取得メソッドを説明しました。PHP5 には、属性の値を設定および取得するための特別なメソッド「__set()」および「__get()」メソッドが用意されています。デフォルトで存在しますが、コンストラクター メソッド (__construct()) と同様に、これら 2 つのメソッドは次の方法で追加する場合にのみ存在します。自分のスタイルに合わせて追加することもできます:

コードは次のとおりです コードをコピー


//__get() メソッドはプライベート属性を取得するために使用されます
関数 __get($property_name)
{
If(isset($this->$property_name)) {
return($this->$property_name); }その他{
return(NULL); }
}

//__set() メソッドはプライベート属性を設定するために使用されます
関数 __set($property_name, $value)
{
$this->$property_name = $value; }

//__get() メソッドはプライベート属性を取得するために使用されます
関数 __get($property_name)

{

If(isset($this->$property_name)) {
return($this->$property_name);
}その他{
return(NULL);
}
}

//__set() メソッドはプライベート属性を設定するために使用されます
関数 __set($プロパティ名, $値)

{

$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" を渡すことで、不正な値を渡さないようにすることもできます。このメソッドでの判定。コードは次のとおりです:

コードは次のとおりです コードをコピー

クラスの人
{
//以下は人々のメンバー属性であり、すべてカプセル化されたプライベートメンバーです
Private $name //その人の名前
Private $sex //人の性別
Private $age // 人の年齢

//__get() メソッドはプライベート属性を取得するために使用されます
関数 __get($property_name)
{
. get() メソッドが自動的に呼び出されます
"; If(isset($this->$property_name)) {
return($this->$property_name);                                                                                           return(NULL);                                                                                        }

//__set() メソッドはプライベート プロパティを設定するために使用されます
関数 __set($property_name, $value)
{
echo 「値を直接設定する場合」プライベート属性の場合、__set() メソッドが自動的に呼び出され、プライベート属性に値が割り当てられます
";
$this->$property_name = $value; }
}

$p1=新しい人
;
//値をプライベート属性に直接割り当てると、値を割り当てるために __set() メソッドが自動的に呼び出されます
$p1->name="張三"; $p1->性別="男性"; $p1-> 年齢 = 20;
//プライベート属性の値を直接取得すると、__get() メソッドが自動的に呼び出され、メンバー属性の値が返されます
echo "名前:".$p1->名前."
"; echo "性別:".$p1->sex."
"; echo "年齢:".$p1-> 年齢."
";
クラスの人
{
//以下は人々のメンバー属性であり、それらはすべてカプセル化されたプライベートメンバーです
Private $name //その人の名前
Private $sex //人の性別
Private $age //その人の年齢

//__get() メソッドはプライベート属性を取得するために使用されます
関数 __get($property_name)
{
echo "プライベート属性値を直接取得する場合、この __get() メソッドが自動的に呼び出されます
";
If(isset($this->$property_name)) {
return($this->$property_name);
}else {
return(NULL);
}
}

//__set() メソッドはプライベート属性の設定に使用されます
関数 __set($property_name, $value)
{
echo "プライベート属性の値を直接設定すると、値をプライベート属性に割り当てるために __set() メソッドが自動的に呼び出されます
";
$this->$property_name = $value;
}
}

$p1=新しい人();

//プライベート属性に値を直接割り当てると、値を割り当てるために __set() メソッドが自動的に呼び出されます
$p1->name="張三";
$p1->sex="男性";
$p1->年齢=20;

//プライベート属性の値を直接取得します。__get() メソッドが自動的に呼び出され、メンバー属性の値が返されます
echo "名前:".$p1->名前."
";
echo "性別:".$p1->sex."
";
echo "年齢:".$p1->age."
";

プログラム実行結果:
プライベート属性の値を直接設定すると、__set() メソッドが自動的に呼び出され、プライベート属性に値が割り当てられます
プライベート属性の値を直接設定すると、__set() メソッドが自動的に呼び出され、プライベート属性に値が割り当てられます
プライベート属性の値を直接設定すると、__set() メソッドが自動的に呼び出され、プライベート属性に値が割り当てられます
private属性値を直接取得する場合は、__get()メソッドが自動的に呼び出されます
名前:張三
private属性値を直接取得する場合は、__get()メソッドが自動的に呼び出されます
性別:男性
private属性値を直接取得する場合は、__get()メソッドが自動的に呼び出されます
年齢: 20歳

上記のコードに __get() メソッドと __set() メソッドが追加されていない場合、プライベート メンバーはクラス外で操作できないため、プログラムは間違った動作をします。また、上記のコードは自動的に __get() メソッドと __set() メソッドを呼び出して支援します。カプセル化されたプライベート メンバーに直接アクセスします。

__isset() メソッド: このメソッドを説明する前に、isset() 関数の応用を見てみましょう。 isset() は、変数がパラメータとして渡され、値が設定されているかどうかを判断するために使用されます。渡された変数が存在する場合は true、それ以外の場合は false が返されます。

それでは、オブジェクトの外部で「isset()」関数を使用して、オブジェクト内のメンバーが設定されているかどうかを判断する場合、それを使用できますか?オブジェクト内のメンバーがパブリックである場合、この関数を使用してメンバー属性を測定できますが、プライベートなメンバー属性はカプセル化されているため、この関数は機能しません。外部に露出します。つまり、オブジェクトの外部で「isset()」関数を使用して、プライベートメンバーのプロパティが設定されているかどうかを判断することはできないのでしょうか?はい、「__isset()」メソッドをクラスに追加するだけで済みます。オブジェクト内のプライベートメンバーが設定されているかどうかを判断するために「isset()」関数がクラスの外部で使用される場合、この関数は内部で自動的に呼び出されます。 「__isset()」メソッドはそのような操作を完了するのに役立ち、「__isset()」メソッドをプライベートにすることもできます。次のコードをクラスに追加するだけです:

__unset() メソッド: このメソッドを見る前に、まず「unset()」関数を見てみましょう。「unset()」の関数は、指定された変数を削除し、true を返すことです。変数が削除されます。では、オブジェクトの外部にあるオブジェクト内のメンバー属性を削除したい場合は、「unset()」関数を使用できますか? オブジェクト内のメンバー属性がパブリックである場合、この関数を使用して削除できます。オブジェクトのパブリック属性。オブジェクトのメンバー属性がプライベートである場合、同様に、オブジェクトに「__unset()」メソッドを追加する場合も同様です。 、オブジェクトのプライベート メンバー プロパティから削除できます。 「__unset()」メソッドをオブジェクトに追加した後、オブジェクトの外部で「unset()」関数を使用してオブジェクト内のプライベートメンバー属性を削除すると、「__unset()」関数が自動的に呼び出され、オブジェクト内のプライベート メンバー属性。このメソッドはクラス内でプライベートとして定義することもできます。次のコードをオブジェクトに追加するだけです:

コードは次のとおりです コードをコピー

プライベート関数 __isset($nm)
{
echo "isset() 関数がプライベート メンバー $nm を決定するためにクラス外で使用される場合、この関数は自動的に呼び出されます
isset($this->$nm) を返します。 }

プライベート関数 __isset($nm)

{
echo "プライベートメンバー $nm を決定するために isset() 関数がクラス外で使用されるときに自動的に呼び出されます";
return isset($this->$nm);
}

コードは次のとおりです コードをコピー

プライベート関数 __unset($nm)
{
echo "プライベートメンバーを削除するためにクラス外で unset() 関数が使用されると自動的に呼び出されます
設定を解除($this->$nm); }

プライベート関数 __unset($nm)

{
echo "プライベートメンバーを削除するためにクラス外で unset() 関数が使用されると自動的に呼び出されます";
unset($this->$nm);
完全な例を見てみましょう:


クラスの人
{
// 以下は人々のメンバー属性です
Private $name // 人の名前
Private $sex // 人の性別
Private $age // その人の年齢
//__get() メソッドはプライベート属性を取得するために使用されます
プライベート関数 __get($property_name)
{
If (isset($this->$property_name)) {
return($this->$property_name);                                                                          return(NULL);                                                                                       }
// __set() メソッドはプライベート プロパティの設定に使用されます
プライベート関数 __set($property_name, $value)
{
$this->$property_name = $value; }
// __isset() メソッド
プライベート関数 __isset($nm)
{
echo "プライベートメンバーの測定時に isset() 関数が自動的に呼び出されます"; return isset($this->$nm); }
// __unset() メソッド
プライベート関数 __unset($nm)
{
echo "プライベートメンバーを削除するためにクラス外で unset() 関数が使用されると自動的に呼び出されます
unset($this->$nm); }
}
$p1 = 新しい人 (); $p1->name = "これは人の名前です"; // isset() 関数を使用してプライベート メンバーを測定する場合、完了を支援するために __isset() メソッドが自動的に呼び出され、返される結果は true です
echo var_dump(isset($p1->name))
; echo $p1->名前
; // unset() 関数を使用してプライベート メンバーを削除すると、__unset() メソッドが自動的に呼び出され、タスクを完了して name private 属性を削除できるようになります
unset($p1->名前); // は削除されているため、この行の出力はありません
エコー $p1->名前

クラスの人
{
//人のメンバー属性は以下の通りです
private $name // 人の名前
private $sex // 人の性別
private $age // 人の年齢
//__get() メソッドはプライベート属性を取得するために使用されます
プライベート関数 __get($property_name)
{
if (isset($this->$property_name)) {

Return($this->$property_name);

} その他 {
リターン(NULL);
}
}
// __set() メソッドはプライベート属性を設定するために使用されます
プライベート関数 __set($property_name, $value)
{
$this->$property_name = $value;
}
// __isset() メソッド
プライベート関数 __isset($nm)
{
echo "プライベートメンバーを測定するときに isset() 関数が自動的に呼び出されます";
isset($this->$nm);
を返します }
// __unset() メソッド
プライベート関数 __unset($nm)
{
echo "プライベートメンバーを削除するためにクラス外で unset() 関数が使用されると自動的に呼び出されます";
unset($this->$nm);
}
}
$p1 = 新しい人();
$p1->name = "これは人の名前です";
// isset() 関数を使用してプライベート メンバーを測定する場合、完了を支援するために __isset() メソッドが自動的に呼び出され、戻り結果は true になります
echo var_dump(isset($p1->name)) "";
echo $p1->name . "";
// unset() 関数を使用してプライベート メンバーを削除すると、__unset() メソッドが自動的に呼び出され、タスクを完了して名前プライベート属性を削除できるようになります
unset($p1->名前);
// は削除されているため、この行の出力はありません
echo $p1->name;出力結果は次のとおりです:

プライベートメンバーを測定するときにisset()関数が自動的に呼び出されます
ブール(真)
これは人の名前です

isset() 関数は、プライベートメンバーを測定するときに自動的に呼び出されます
ブール(真)
これは個人名 __set()、__get()、__isset()、__unset() で、クラス外で unset() 関数を使用してプライベート メンバーを削除するときに自動的に呼び出されます

これら 4 つのメソッドはすべてオブジェクトに追加され、オブジェクトの外部からオブジェクト内のプライベート プロパティの操作を完了するために必要なときに自動的に呼び出されます

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629197.html技術記事この記事では、PHP5 オブジェクト指向 - (10) __set() __get() __isset() __unset() の 4 つのメソッドについて簡単に紹介します。 __set() __get() __i...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。