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
Lepaskan: 2016-06-13 12:09:08
asal
779 orang telah melayarinya

关于__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 />
Salin selepas log masuk


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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan