PHP魔术方法__set()

2018-09-16 15:00 By "Powerless" 3349 0 1

当试图设置对象中未定义的属性时,就会触发__set()方法,调用参数为被设置的属性名和属性值

示例代码如下:

<?php
class Person
{
    private $name;
    private $age;
    public function __construct($name="",  $age=25)
    {
        $this->name = $name;
        $this->age  = $age;
    }
    public function __set($property, $value) {
        if ($property=="age")
        {
            if ($value > 150 || $value < 0) {
                return;
            }
        }
        $this->$property = $value;
    }
    public function say(){
        echo "My name is ".$this->name.",I'm ".$this->age." years old";
    }
}
$Person=new Person("John", 25); // 注意下面的代码会改变初始值
$Person->name = "Lili";     // "name" 属性成功赋值。如果没有 __set() 方法,程序就会抛出异常
$Person->age = 16; // "age" 属性成功赋值
$Person->age = 160; // 160 是个非法值,所以赋值失败
$Person->say();  // 输出:My name is Lili, I'm 16 years old.

输出结果如下:

My name is Lili, I'm 16 years old


评 论

Others Discussion

  • 初识七层、五层、四层网络协议
    Posted on 2021-04-09 16:52
  • Redis各种数据类型的使用场景举例分析【二】
    Posted on 2018-11-22 10:30
  • QPS、TPS、RT、吞吐量到底是什么
    Posted on 2020-02-02 01:15
  • 2018年云计算热词
    Posted on 2019-06-12 18:19
  • Linux工具 - NM目标文件格式分析
    Posted on 2019-04-24 10:29
  • ACID原则
    Posted on 2020-12-17 16:36
  • 前端知识体系精简-Css
    Posted on 2018-03-28 18:34
  • 浏览器访问网站经历的步骤-Html
    Posted on 2018-11-28 18:48