Home > Backend Development > PHP Tutorial > 关于set的问题

关于set的问题

WBOY
Release: 2016-06-23 13:46:26
Original
1047 people have browsed it

class aa{	function __set($pro, $v){		echo "a\n";		$this->pro=$v;		echo "$v\n";	}}$a=new aa;$a->b=1;
Copy after login


输出是a a 1 1;

2个问题,为何输出2次;

为何是a a 1 1,而不是a 1 a 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;
就只进入一次了




理解了,主要是$this->pro的问题;

平时手误写成$this->$val,会被提示未定义变量;  没注意魔术方法里面就是这样用的;



Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template