> 백엔드 개발 > PHP 튜토리얼 > 关于set的问题

关于set的问题

WBOY
풀어 주다: 2016-06-23 13:46:26
원래의
1032명이 탐색했습니다.

class aa{	function __set($pro, $v){		echo "a\n";		$this->pro=$v;		echo "$v\n";	}}$a=new aa;$a->b=1;
로그인 후 복사


输出是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,会被提示未定义变量;  没注意魔术方法里面就是这样用的;



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿