我有一堂课:
class Foo {
// Accept an assoc array and appends its indexes to the object as property
public function extend($values){
foreach($values as $var=>$value){
if(!isset($this->$var))
$this->$var = $value;
}
}
}
$Foo = new Foo;
$Foo->extend(array('name' => 'Bee'));
Run Code Online (Sandbox Code Playgroud)
现在该$Foo对象有一个name值为 value的公共属性Bee。
如何更改extend函数以使变量私有?
编辑 使用私有数组是另一种方式,绝对不是我的答案。
只是简单、糟糕的设计。
在运行时添加私有 [!] 字段的目的是什么?现有方法不能依赖此类添加的字段,并且您会弄乱对象功能。
如果你希望你的对象表现得像一个哈希图[即你可以只调用$obj -> newField = $newValue],请考虑使用魔法__get和__set方法。