ホームページ  >  記事  >  バックエンド開発  >  PHPの__set()メソッドの詳しい説明

PHPの__set()メソッドの詳しい説明

藏色散人
藏色散人オリジナル
2019-07-22 13:18:5510058ブラウズ

PHP では、2 つのアンダースコア __ で始まるメソッドをマジック メソッドと呼び、PHP において重要な役割を果たします。

## このうち、__set() はクラスのメンバ変数を設定するときに呼び出されます。

#__set() の関数:

__set($property, $value)` メソッドは、プライベート プロパティを設定するために使用されます。未定義のプロパティに値を割り当てると、このメソッドがトリガーされます。渡されるパラメータは、設定するプロパティ名と値です。

以下のデモ コードをご覧ください:

<?php
class Person
{
    private $name;
    private $age;
    public function __construct($name="",  $age=25)
    {
        $this->name = $name;
        $this->age  = $age;
    }
    /**
     * 声明魔术方法需要两个参数,真接为私有属性赋值时自动调用,并可以屏蔽一些非法赋值
     * @param $property
     * @param $value
     */
    public function __set($property, $value) {
        if ($property=="age")
        {
            if ($value > 150 || $value < 0) {
                return;
            }
        }
        $this->$property = $value;
    }
    /**
     * 在类中声明说话的方法,将所有的私有属性说出
     */
    public function say(){
        echo "我叫".$this->name.",今年".$this->age."岁了";
    }
}
$Person=new Person("小明", 25); //注意,初始值将被下面所改变
//自动调用了__set()函数,将属性名name传给第一个参数,将属性值”李四”传给第二个参数
$Person->name = "小红";     //赋值成功。如果没有__set(),则出错。
//自动调用了__set()函数,将属性名age传给第一个参数,将属性值26传给第二个参数
$Person->age = 16; //赋值成功
$Person->age = 160; //160是一个非法值,赋值失效
$Person->say();  //输出:我叫小红,今年16岁了

実行結果:

我叫小红,今年16岁了

関連する推奨事項: 「

PHP の __get() メソッドの詳細な説明##」 #「

以上がPHPの__set()メソッドの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。