PHP:一种不使用getter获取属性的方法?

PHP:一种不使用getter获取属性的方法?,php,getter-setter,Php,Getter Setter,基本上,想法如下: 正在从数据库查询创建对象。其中一个字段包含编码字符串,该字符串在getter中解码 问题是我需要创建此对象的部分副本。这个副本应该包含编码字符串,而不是解码版本。显然,当我试图直接复制该值时,它调用getter 除了在没有getter的情况下创建字段的副本外,是否有解决此类问题的方法 UPD: 我使用的是神奇的方法,不完全是一个获得者(我的坏问题,第一个问题) 克隆对象并非如此,因为第二个对象也来自DB,只需要替换一些字段,如 $item1->version = $it

基本上,想法如下:

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

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

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

UPD: 我使用的是神奇的方法,不完全是一个获得者(我的坏问题,第一个问题)

克隆对象并非如此,因为第二个对象也来自DB,只需要替换一些字段,如

$item1->version = $item2->version;
产出:


ssbwcm92awrlihrozbizxn0ihnv0aw9ucye=

因此,最终我找到了最佳的方法

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


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

当我尝试直接复制该值时,它调用getter。
;你能给我们看一下你用来执行复制的代码吗?只需克隆对象…可能需要显示你获取的类以及你是否可以修改该类的状态。无代码==无理解==无帮助。如果类不允许访问编码值,但在类之外的某个地方需要该值,则类的设计可能不正确,或者类本身必须能够提供这样一个部分副本,这样就不需要外部代码直接获取受保护的值。“问题是我需要创建此对象的部分副本。”--实现这一点的正确方法是复制对象的类的方法。该方法创建部分副本,并根据需要返回相同类型或不同类型的新对象。
$item1->version = $item2->version;
class AClass
{
    private $someProperty = 'SSBwcm92aWRlIHRoZSBiZXN0IHNvbHV0aW9ucyE=';

    public function getSomeProperty()
    {
        return base64_decode($this->someProperty);
    }
}

// Get the instance.
$object = new AClass;

// Get the property.
$property = (new ReflectionClass($object))->getProperty('someProperty');

// Make it accessible.
$property->setAccessible(true);

// Get the value of the property for the instance.
echo $property->getValue($object);