如何從對象方法內的給定參數創建屬性?如何動態創建新屬性
class Foo{
public function createProperty($var_name, $val){
// here how can I create a property named "$var_name"
// that takes $val as value?
}
}
而且我希望能夠訪問屬性,如:
$object = new Foo();
$object->createProperty('hello', 'Hiiiiiiiiiiiiiiii');
echo $object->hello;
而且是有可能,我可以讓物業公共/保護/私有?我知道,在這種情況下,它應該是公開的,但我可能要添加一些瑪姬方法來獲得保護性和東西:)
我想我找到了解決辦法:
protected $user_properties = array();
public function createProperty($var_name, $val){
$this->user_properties[$var_name] = $val;
}
public function __get($name){
if(isset($this->user_properties[$name])
return $this->user_properties[$name];
}
你認爲這是一個好主意?
謝謝。儘管我在課堂上需要它。這是一種很複雜的解釋,屬性實際上是網站管理員可以啓用/禁用的站點擴展的對象:)但是我會使用我的解決方案,我認爲最好將它們放在數組中。 – Alex 2012-01-03 02:33:04
可以將它們設置爲私人或保護? – 2014-04-26 03:31:22
像這樣設置屬性不允許我們將其設置爲私有或受保護,因爲它是從公開設置的。但是,您可以嘗試使用OOP魔術方法'__get()'和'__set()'。請參閱http://stackoverflow.com/questions/4713680/php-get-and-set-magic-methods – mauris 2014-04-26 05:17:15