PHP中__set()方法詳解

2020-07-16 10:05:40
PHP中把以兩個下劃線__開頭的方法稱為魔術方法(Magic methods),這些方法在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()方法詳解的詳細內容,更多請關注TW511.COM其它相關文章!