DimensionPlane
2018-07-27 17:25
class Car { private $ary = array(); public function __set($key, $val) { $this->ary[$key] = $val; } public function __get($key) { if (isset($this->ary[$key])) { return $this->ary[$key]; } return null; } public function __isset($key) { if (isset($this->ary[$key])) { return true; } return false; } public function __unset($key) { unset($this->ary[$key]); } } $car = new Car(); $car->name = '汽车'; //name属性动态创建并赋值 echo $car->name;
public function __set($key, $val) 就是用魔术函数 __set 动态创建给私有成员属性设置值的,这里有两个参数,一个是参数的名称,一个是参数的值 而动态创建产生的对象属性是全局的并且无需声明就可以访问,所以当用$car = new Car(); $car->name = '汽车'; 调用这个类和方法的时候,就是给$key和$val赋值了name和'汽车',所以当你echo的时候就会输出'汽车'
动态产生的对象属性是全局性的,这与变量无需声明就可访问是一脉相承的
但是由于一些学究的批评,php 开始逐渐放弃这种轻巧的表述方法了
所以,应该尽量不要这样做
听大佬们说的
PHP进阶篇
181835 学习 · 2577 问题
相似问题