个中__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()要领详解的细致内容,更多请关注ki4网别的相干文章!