我有一节课:
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'));
现在,$Foo对象具有值为Bee的公共名称属性.
如何更改扩展函数以使变量变为私有?
编辑
使用私有阵列是另一种方式,绝对不是我的答案.
解决方法:
简单,糟糕的设计.
在运行时添加私有[!]字段的目的是什么?现有的方法不能依赖于这些添加的字段,而且你会搞乱对象的功能.
如果你希望你的对象表现得像一个hashmap [即你可以拨打$obj – > newField = $newValue],考虑使用magic __get和__set方法.
标签:php,oop
来源: https://codeday.me/bug/20190826/1725485.html