其中__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其它相關文章!