我正在尝试为值对象实现教义2 可嵌入功能。
这是一个简单的片段,根据学说官方文档稍作修改:
/** @Entity */
class User
{
/** @Embedded(class = "Address") */
protected $address;
/** @Column(type = "string") */
protected $street;
}
/** @Embeddable */
class Address
{
/** @Column(type = "string") */
protected $street;
/** @Column(type = "string") */
protected $postalCode;
/** @Column(type = "string") */
protected $city;
/** @Column(type = "string") */
protected $country;
}
当我尝试从嵌入式对象访问属性时,我收到“无法访问受保护的属性”错误 - 这是预期的。可嵌入对象应该只能由它们的基实体类读取,并且不能修改,因为它们是不可变的(遵循领域驱动的设计指南)。我不明白的是,由于它们是私有/受保护的,我该如何读取它们的属性?这里有什么 PHP 魔法吗?我试图使用不同的吸气剂,例如:
getStreet(Address $address){
$this->street = $address->street;
}
但在实体管理器实例上调用持久和刷新方法之前总是会出错。
谢谢。