来自Java背景,我发现这很奇怪。请看一下这段代码 -
<?php
class People {
private $name;
private $age;
public function set_info($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function get_info() {
echo "Name : {$this->name}<br />";
echo "Age : {$this->age}<br />";
}
}
$p1 = new People();
$p1->set_info("Sam",22);
$p1->get_info();
$p1->ID = 12057;
echo "<pre>".print_r($p1,true)."</pre>";
?>
输出:
People Object
(
[name:People:private] => Sam
[age:People:private] => 22
[ID] => 12057
)
在ID
课程中未创建People
的任何属性,但我可以使用ID
在课堂外为p1
指定一个值。
在Java中,这会产生错误 -
无法找到符号
这是PHP中的一项功能吗?如果它是什么叫它?它是如何有益的?
答案 0 :(得分:5)
由于PHP是一种动态类型的脚本语言,因此它允许Dynamic Properties
。我推荐你this article。
JavaScript和Python等语言允许对象实例拥有 动态属性。事实证明,PHP也是如此。看着 有关您可能导致的对象和类的官方PHP文档 相信动态实例属性需要自定义__get和__set 神奇的方法。他们没有。