PHP の非一般メソッド _set()、get()、isset()、および _unset()

WBOY
リリース: 2016-06-13 12:11:58
オリジナル
1047 人が閲覧しました

PHP の特殊メソッド __set()、__get()、__isset() および __unset()

  • __set() メソッドは、プライベート プロパティ値を設定するために使用されます。
  • __get() メソッドは、プライベート属性値を取得するために使用されます。
  • __isset() メソッドは、プライベート属性値が設定されているかどうかを検出するために使用されます。
  • __unset() メソッドはプライベート属性を削除するために使用されます。

実際のアプリケーションではクラスの属性がprivateに設定されていることが多く、属性にアクセスする必要がある場合に面倒になります。プロパティへのアクセスはメソッドとして記述することができますが、PHP にはそのような操作を容易にする特別なメソッドがいくつか用意されています。

__set()

__set() メソッドはプライベート属性値を設定するために使用されます:

function __set($property_name, $value){     $this->$property_name = $value; }
ログイン後にコピー
ログイン後にコピー

クラスで __set() メソッドを使用した後、$ を使用する場合p1->name = "Zhang San"; この方法でオブジェクトのプライベート属性の値を設定すると、__set() メソッドが自動的に呼び出され、プライベート属性の値が設定されます。

__get()

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

function __set($property_name, $value){     return isset($this->$property_name) ? $this->$property_name : null;}
ログイン後にコピー
ログイン後にコピー

例:

<?phpclass Person {    private $name;    private $sex;    private $age;    //__set()方法用来设置私有属性    function __set($property_name, $value) {         echo "在直接设置私有属性&#20540;的时候,自动调用了这个 __set() 方法为私有属性赋&#20540;<br />";        $this->$property_name = $value;     }    //__get()方法用来获取私有属性    function __get($property_name) {          echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br />";        return isset($this->$property_name) ? $this->$property_name : null;    }}$p1=new Person();//直接为私有属性赋值的操作, 会自动调用 __set() 方法进行赋值$p1->name = "张三";//直接获取私有属性的值, 会自动调用 __get() 方法,返回成员属性的值echo "我的名字叫:".$p1->name;	?>
ログイン後にコピー
ログイン後にコピー

たとえば、出力:

在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值在直接获取私有属性值的时候,自动调用了这个 __get() 方法我的名字叫:张三
ログイン後にコピー
ログイン後にコピー

__isset()

__isset() メソッドは、プライベート属性値が設定されているかどうかを検出するために使用されます。

オブジェクト内のメンバーがパブリックである場合は、isset() 関数を直接使用できます。プライベート メンバー属性の場合は、クラスに __isset() メソッドを追加する必要があります。

private function __isset($property_name){    return isset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー

このように、クラスの外で isset() 関数を使用してプライベート メンバーかどうかを判断する場合、オブジェクトに が設定されている場合、自動的に __isset() メソッドが呼び出されて検出されます。

__unset()

__unset() メソッドは、プライベート属性を削除するために使用されます。

isset() 関数と同様に、unset() 関数はオブジェクトのパブリック メンバー属性のみを削除できます。オブジェクト内のプライベート メンバー属性を削除したい場合は、__unset() 関数を使用する必要があります。 ) メソッド:

private function __unset($property_name){    unset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー
  • __set() メソッドは、プライベート プロパティ値を設定するために使用されます。
  • __get() メソッドは、プライベート属性値を取得するために使用されます。
  • __isset() メソッドは、プライベート属性値が設定されているかどうかを検出するために使用されます。
  • __unset() メソッドはプライベート属性を削除するために使用されます。

実際のアプリケーションではクラスの属性がprivateに設定されていることが多く、属性にアクセスする必要がある場合に面倒になります。プロパティへのアクセスはメソッドとして記述することができますが、PHP にはそのような操作を容易にする特別なメソッドがいくつか用意されています。

__set()

__set() メソッドはプライベート属性値を設定するために使用されます:

function __set($property_name, $value){     $this->$property_name = $value; }
ログイン後にコピー
ログイン後にコピー

クラスで __set() メソッドを使用した後、$ を使用する場合p1->name = "Zhang San"; この方法でオブジェクトのプライベート属性の値を設定すると、__set() メソッドが自動的に呼び出され、プライベート属性の値が設定されます。

__get()

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

function __set($property_name, $value){     return isset($this->$property_name) ? $this->$property_name : null;}
ログイン後にコピー
ログイン後にコピー

例:

<?phpclass Person {    private $name;    private $sex;    private $age;    //__set()方法用来设置私有属性    function __set($property_name, $value) {         echo "在直接设置私有属性&#20540;的时候,自动调用了这个 __set() 方法为私有属性赋&#20540;<br />";        $this->$property_name = $value;     }    //__get()方法用来获取私有属性    function __get($property_name) {          echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br />";        return isset($this->$property_name) ? $this->$property_name : null;    }}$p1=new Person();//直接为私有属性赋值的操作, 会自动调用 __set() 方法进行赋值$p1->name = "张三";//直接获取私有属性的值, 会自动调用 __get() 方法,返回成员属性的值echo "我的名字叫:".$p1->name;	?>
ログイン後にコピー
ログイン後にコピー

この例を実行します, 出力:

在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值在直接获取私有属性值的时候,自动调用了这个 __get() 方法我的名字叫:张三
ログイン後にコピー
ログイン後にコピー

__isset()

__isset() メソッドは、private 属性値が設定されているかどうかを検出するために使用されます。

オブジェクト内のメンバーがパブリックである場合、isset() 関数を直接使用できます。プライベート メンバー属性の場合は、クラスに __isset() メソッドを追加する必要があります。

private function __isset($property_name){    return isset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー

このように、クラスの外で isset() 関数を使用してプライベート メンバーかどうかを判断する場合、オブジェクトに が設定されている場合、自動的に __isset() メソッドが呼び出されて検出されます。

__unset()

__unset() メソッドは、プライベート属性を削除するために使用されます。

isset() 関数と同様に、unset() 関数はオブジェクトのパブリック メンバー属性のみを削除できます。オブジェクト内のプライベート メンバー属性を削除したい場合は、__unset() 関数を使用する必要があります。 ) メソッド:

private function __unset($property_name){    unset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート