Я пытаюсь точно понять, как реализовать правильное разделение между двумя пакетами в Symfony, и я столкнулся с проблемой доктрины.
У меня есть два пакета, более общий пакет (полный аннотации)классы) под названием «BaseProduct», а затем реализация этого комплекта (который дает возможность специализировать функциональные возможности этого комплекта) под названием «ClientProduct».
У меня есть два объекта в комплекте «Product», которыесвязанные.
abstract class Product
{
// One product has many attributes
private $attributes;
private function getAttributes()
{
return $this->attributes;
}
}
abstract class Attribute
{
private $name;
private $value;
private function getName()
{
return $this->name;
}
private function getValue()
{
return $this->value;
}
}
А затем конкретная реализация
class Product extends BaseProduct/Product
{
}
class Attribute extends BaseProduct/Attribute
{
}
Мой вопрос
Сначала я бы использовал 'mappedSuperclass' дляделайте это, но, читая документы, вы не можете настроить коллекции как ассоциации (понятно) на не конкретных классах.
Я пытаюсь найти другой способ сделать это.
Это дажевозможный?Потому что мой «базовый класс» имеет отношение к другому «базовому классу» (оба абстрактные).В таком случае мне нужно перенести отношения в «конкретную» реализацию или я могу сохранить их на этом уровне (аннотация)?Мои определения сущностей ('.yml') не показаны, но я намерен связать их с конкретными реализациями (где связи между сущностями также находятся между другими конкретными реализациями) и оставить базовые классы без определений сущностей.
Любой ввод приветствуется - цель здесь состоит в том, чтобы создать отделенный пакет, который может быть специализированным.Я уверен, что это довольно общая цель, поэтому мне было бы интересно посмотреть, как это делают другие (если на github есть какие-то пакеты, мне было бы интересно их увидеть).