pro=$v; echo "$vn"; }}$a=new aa;$a->b=1;输出是a a 1 1;2个问题,为何"/> pro=$v; echo "$vn"; }}$a=new aa;$a->b=1;输出是a a 1 1;2个问题,为何">

关于_set的有关问题

WBOY
Freigeben: 2016-06-13 12:09:08
Original
778 Leute haben es durchsucht

关于__set的问题

<br />class aa{<br />	function __set($pro, $v){<br />		echo "a\n";<br />		$this->pro=$v;<br />		echo "$v\n";<br />	}<br />}<br /><br />$a=new aa;<br />$a->b=1;<br />
Nach dem Login kopieren


输出是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;
就只进入一次了

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage