pro=$v;echo "$v\n";}}$a=new aa;$a->b=1; 输出是a a 1 1; 2个问题,为何输">
时间:2021-07-01 10:21:17 帮助过:5人阅读
class aa{ function __set($pro, $v){ echo "a\n"; $this->pro=$v; echo "$v\n"; }}$a=new aa;$a->b=1;
你把 echo "a\n"; 改成 echo "$pro\n"; 就会看到
b 因为 b 属性不存在,所以进入了 __set 方法
pro 同样因为 pro 属性不存在,再次进入 __set 方法
1 进入两次,打印两次值就不足为奇了
1
当 $this->pro=$v;
改为 $this->$pro=$v;
就只进入一次了
你把 echo "a\n"; 改成 echo "$pro\n"; 就会看到
b 因为 b 属性不存在,所以进入了 __set 方法
pro 同样因为 pro 属性不存在,再次进入 __set 方法
1 进入两次,打印两次值就不足为奇了
1
当 $this->pro=$v;
改为 $this->$pro=$v;
就只进入一次了