PHP:没有getter获取财产的方法?

时间:2017-01-26 16:09:45

标签: php getter-setter

基本上,这个想法如下:

正在从db查询创建对象。其中一个字段包含一个编码字符串,该字符串在getter中解码。

问题是我需要创建此对象的部分副本。此副本应包含编码的字符串,而不是解码的版本。显然,当我尝试直接复制值时,它会调用getter。

除了在没有getter的情况下创建字段的副本之外,是否存在此类问题的解决方法?

UPD: 我正在使用魔法,而不是一个吸气剂(我的坏,第一个问题)

public function __get($property){
    ...
        case 'version':
            return $this->_getVersion();
}

克隆对象不是这种情况,因为第二个对象也来自DB,只需要替换一些字段,如

$item1->version = $item2->version;

2 个答案:

答案 0 :(得分:0)

所以最后我发现了最佳的做法。

我所做的是将解码函数从__get()移动到__set()方法。我现在仅将编码的字符串存储在DB中,并且仅在模型中存储解码的数组。

通过这样做,我确保字段中保存的数据是相同的类型。我还检查数组是否存储在字段中。这表明数据是否已被解码。

答案 1 :(得分:-1)

Less

输出:

SSBwcm92aWRlIHRoZSBiZXN0IHNvbHV0aW9ucyE =