【发布时间】:2015-07-19 07:28:55
【问题描述】:
来自 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
)
尚未在 People 类中创建任何属性为 ID,但我可以使用 p1 在类外为 ID 赋值。
在 Java 中,这会报错 -
找不到符号
这是 PHP 的一个特性吗?如果是那它叫什么?它有什么好处?
【问题讨论】:
-
是的,这是 PHP 对象的一个特性。我认为你不应该依赖它。我的观点是它与 PHP4 的对象模型(看起来像带有方法的数组)的逆向兼容。我找不到任何有关此的官方文档。
-
这是一种避免它的方法:stackoverflow.com/q/9136464/472495
标签: php properties