|
认识魔术方法
- <?php
- // 封装
- // 魔术方法: 满足特定条件时,自动调用
- // 当用户在外部动态创建属性的时候,魔术方法 __set() 也会自动调用
- class Girl
- {
- // 私有属性
- private $name;
- private $weight;
- public function __construct($name, $weight)
- {
- $this->name = $name;
- $this->weight = $weight;
- }
- // 魔术方法:读取不可访问的属性时,自动调用。
- public function __get($key)
- {
- // echo $this->$key; // $this->weight;
- return $this->$key;
- }
- public function __set($key, $value)
- {
- var_dump($key, $value);
- // $key = height, $value = 123
- // $this->height = 123
- $this->$key = $value;
- }
- }
- $coco = new Girl('coco', 200);
- $coco->height = 123;
- echo $coco->weight;
- echo '<pre>';
- print_r($coco);
- echo '</pre>';
复制代码 了解魔术方法
- <?php
- // 封装
- // 当我们需要动态创建类的属性和方法是,我们是可以通过魔术方法来实现的。
- // 当访问没有定义或者不可见的属性和方法时,魔术方法会被调用。
- class Girl
- {
- private $name;
- private $weight;
- public function __construct($name, $weight)
- {
- $this->name = $name;
- $this->weight = $weight;
- }
- public function __get($key)
- {
- return $this->$key;
- }
- public function __set($key, $value)
- {
- var_dump('run:set', $key, $value);
- $this->$key = $value;
- }
- }
- $lili = new Girl('lili', 180);
- echo '<pre>';
- print_r($lili);
- echo '</pre>';
- // 访问私有属性
- echo $lili->weight;
- // 设置私有属性
- $lili->weight = 190;
- // 动态添加一个未定义的属性
- $lili->age = 18;
复制代码
|
|