[英]PHP setting property that doesn't exist in class works, why? how?
<?php
class ser {
public $a;
}
$x = new ser;
$x->b = 10;
var_dump($x);
像这样的东西。
Class ser
只有$a
属性,但是我们可以将$b
设置$b
这个类的新对象,尽管这个类没有任何$b
属性,它仍可以工作
产量
E:\XAMPP\htdocs\fun\test2.php:12:
object(kurde)[1]
public 'a' => null
public 'b' => int 10
为什么会这样?
为什么我们可以添加属性并将其设置为此类,而它不属于此类?
这怎么可能,为什么可能呢?
任何目的? 让这成为可能的感觉?
这就是PHP所说的“ 重载 ”。 这与几乎任何其他面向对象语言中的重载不同。
如果你不喜欢它,你可以使用__set
magic方法在设置不存在的属性时抛出异常:
public function __set($name, $value) {
throw new \Exception('Property "'.$name.'" does not exist')
}
您可以从文档的评论中看出这个“特性”的一般共识是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.