繁体   English   中英

类设置中不存在的PHP设置属性,为什么? 怎么样?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM