3
來自Java背景,我覺得這很奇怪。請看看這段代碼 -爲什麼PHP允許從類外部創建類屬性?
<?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>";
?>
OUTPUT:
People Object
(
[name:People:private] => Sam
[age:People:private] => 22
[ID] => 12057
)
已經不在People
類的任何財產作爲ID
,但我可以在類外使用的值賦給ID
p1
。
在Java中,這會給出一個錯誤 -
找不到符號
這是PHP中的功能?如果是,那麼它叫什麼?它有什麼好處?
是的,這是PHP對象的一個特性。我認爲你不應該依賴它。我認爲它是與PHP4的對象模型(看起來像數組與方法)逆向兼容。我找不到任何關於此的官方文檔。 – Mat
以下是一種避免它的方法:http://stackoverflow.com/q/9136464/472495 – halfer
可能的重複http://stackoverflow.com/questions/25132970/undefined-public-member-variables-getting-initialized – Gogol