基本上,这个想法如下:
正在从db查询创建对象。其中一个字段包含一个编码字符串,该字符串在getter中解码。
问题是我需要创建此对象的部分副本。此副本应包含编码的字符串,而不是解码的版本。显然,当我尝试直接复制值时,它会调用getter。
除了在没有getter的情况下创建字段的副本之外,是否存在此类问题的解决方法?
UPD: 我正在使用魔法,而不是一个吸气剂(我的坏,第一个问题)
public function __get($property){
...
case 'version':
return $this->_getVersion();
}
克隆对象不是这种情况,因为第二个对象也来自DB,只需要替换一些字段,如
$item1->version = $item2->version;
答案 0 :(得分:0)
所以最后我发现了最佳的做法。
我所做的是将解码函数从__get()移动到__set()方法。我现在仅将编码的字符串存储在DB中,并且仅在模型中存储解码的数组。
通过这样做,我确保字段中保存的数据是相同的类型。我还检查数组是否存储在字段中。这表明数据是否已被解码。
答案 1 :(得分:-1)
Less
输出:
SSBwcm92aWRlIHRoZSBiZXN0IHNvbHV0aW9ucyE =