attr2;attr2"/>  attr2;attr2">

新手请问一个关于类属性的有关问题

WBOY
풀어 주다: 2016-06-13 12:00:20
원래의
814명이 탐색했습니다.

新手请教一个关于类属性的问题

<br />class mycla{<br />  public $attr1;<br />}<br />$a = new mycla();<br />$a -> attr2 = "123";<br />echo $a -> attr2;<br />
로그인 후 복사

attr2在类里面没有定义,但是我发现这样运行后,程序输出了123,也没警告,这个是什么意思,我只定义了attr1这个属性
------解决方案--------------------
这很正常!
$a = 1;
$a 事先没定义,不也能赋值吗?

既然 变量 赋值就算定义,那么类属性为什么不呢?
不就是个有作用域的变量吗?
------解决方案--------------------
当调用php类的一个未定义的属性时,php会自动创建一个属性,默认的访问权限是public
如果禁止这样,可以重载类的__set()方法
------解决方案--------------------
因为class有自带的__set,__get魔术方法。
在给不可访问属性赋值时,__set() 会被调用。 
读取不可访问属性的值时,__get() 会被调用。
 

所以是可以这样写的。

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