Доктрина встраиваемая

Я пытаюсь реализовать доктрину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;
}

но всегда получайте ошибку, прежде чем вызывать методы persist и flush для экземпляра менеджера сущностей.

Благодарю.

-1

Решение

использование getters на встроенном классе.

class Address
{
...
public function getStreet(){
return $this->street;
}
...
}

Затем ваш метод меняется

getStreet(Address $address){
$this->street = $address->getStreet();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]