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

时间:2017-08-24 21:42:47

标签: php oop

=WeekDay([ApptDate]))

像这样。

Day Appts Monday 10 Tuesday 16 Thursday 5 Saturday 9 Totals: 4 40 只有<?php class ser { public $a; } $x = new ser; $x->b = 10; var_dump($x); 属性,但我们可以将ser设置为此类的新对象,尽管此类没有任何$a属性,但它仍可正常工作

输出

$b

为什么会这样?

为什么我们可以添加属性并将其设置为此类,而它不属于此类?

这怎么可能,为什么可能呢?

任何目的?是否有可能实现这一目标?

1 个答案:

答案 0 :(得分:3)

这就是PHP所说的“this page”。这与几乎任何其他面向对象语言中的重载都不同。

如果您不喜欢它,如果设置了不存在的属性,您可以使用__set魔术方法抛出异常:

public function __set($name, $value) {
    throw new \Exception('Property "'.$name.'" does not exist')
}

您可以从文档的评论中看出这个“功能”的普遍共识是什么。