欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-19 10:49:11
...
新手请教一个关于类属性的问题

class mycla{
public $attr1;
}
$a = new mycla();
$a -> attr2 = "123";
echo $a -> attr2;

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

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


所以是可以这样写的。

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频