アクセスできないプロパティに対して isset() または empty() が呼び出されたときに呼び出される __isset()
このメソッドを説明する前に、isset() のアプリケーションを見てみましょう。 ) 関数 isset() は、変数が設定されているかどうかを判定する関数です。変数はパラメータとして渡されます。渡された変数が存在する場合は true が返され、そうでない場合は false が返されます。
では、オブジェクトの外部で isset() 関数を使用して、オブジェクト内のメンバーが設定されているかどうかを判断する場合、それを使用できるでしょうか。
状況は 2 つあります。オブジェクト内のメンバーがパブリックである場合、この関数を使用してメンバー属性を測定できます。メンバーがプライベートなメンバー属性である場合、この関数は機能しません。その理由は、オブジェクト内のメンバーがパブリックである場合、この関数は機能しません。 private. カプセル化されており、外部からは見えません。では、オブジェクトの外部で isset() 関数を使用して、プライベート メンバー属性が設定されているかどうかを判断することはできないのでしょうか。もちろんそれは可能ですが、確実ではありません。
__isset() メソッドをクラスに追加するだけで済みます。オブジェクト内のプライベート メンバーが設定されているかどうかを判断するために isset() 関数がクラスの外部で使用されると、クラスが自動的に呼び出されます。内部の __isset() メソッドは、そのような操作を完了するのに役立ちます。
__isset() の役割:
アクセスできないプロパティに対して isset() または empty() が呼び出される場合、__isset() が呼び出されます。
次のコード デモを参照してください:
<?php class Person { public $sex; private $name; private $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } /** * @param $content * * @return bool */ public function __isset($content) { echo "当在类外部使用isset()函数测定私有成员{$content}时,自动调用<br>"; echo isset($this->$content); } } $person = new Person("小明", 25); // 初始赋值 echo isset($person->sex),"<br>"; echo isset($person->name),"<br>"; echo isset($person->age),"<br>";
実行結果は次のとおりです:
1 // public 可以 isset() 当在类外部使用isset()函数测定私有成员name时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo 当在类外部使用isset()函数测定私有成员age时,自动调用 // __isset() 内 第一个echo 1 // __isset() 内第二个echo
以上がPHPの__isset()メソッドの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。