取這個類中的示例:我可以創建一個不能在運行時動態添加屬性的PHP類嗎?
<?php
class Person
{
private $name = null;
private $dob = null;
public function __construct($name, $dob)
{
$this->name = $name;
$this->dob = $dob;
}
}
$potts = new Person('Matt', '01/01/1987');
var_dump($potts);
$potts->job = 'Software Developer'; // new dynamic property
var_dump($potts);
var_dump(get_object_vars($potts));
輸出如下:
object(Person)#1 (2) {
["name":"Person":private]=>
string(4) "Matt"
["dob":"Person":private]=>
string(10) "01/01/1987"
}
object(Person)#1 (3) {
["name":"Person":private]=>
string(4) "Matt"
["dob":"Person":private]=>
string(10) "01/01/1987"
["job"]=>
string(18) "Software Developer"
}
array(1) {
["job"]=>
string(18) "Software Developer"
}
是否可以停止添加動態特性?是否有可能獲得類定義的屬性列表? (即不是動態的,運行時添加的屬性)
是的,你可以使用__get方法,如本頁其他地方所示,但我想知道爲什麼你需要這個。如果您的代碼添加了您不想要的屬性,請修復代碼。如果開發人員添加您不想要的屬性,請告訴他/她。在語言層面解決這個問題聽起來像對我來說是錯誤的。 – Gordon