Какое учение по наследству выбрать?

Мне трудно решить, какое наследование Доктрины подходит для моего проекта.

Цель состоит в том, чтобы виртуальная машина (ВМ) имела несколько программ (PHP, MySQL и т. Д.).
Каждое из этих программ имеет отдельный класс и несколько общих полей. Сначала я попытался поместить в класс VM отношение к каждому классу программного обеспечения, и это сработало красиво:

/**
* Class VM
*/
class VM
{

/**
* @var \AppBundle\Entity\MySQL
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\MySQL", cascade={"persist"})
*
*/
private $mysql;

/**
* @var \AppBundle\Entity\PHP
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\PHP", cascade={"persist"})
*
*/
private $php;

...
and other softwares, always the same
}

Но теперь я хочу использовать абстрактный класс «Программное обеспечение», от которого будет наследоваться все мое программное обеспечение, и иметь в своем классе ВМ только атрибут $ software. Таким образом, в будущем будет проще добавить новый класс программного обеспечения, унаследованного от Software.
Мой абстрактный класс «Программное обеспечение» связан с классом виртуальной машины (ВМ):

/**
* Class Software
*/
abstract class Software {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="version", type="string", length=255, nullable=true)
*/
private $version;

/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\VM")
*/
private $VM;
}

Я пытался положить @ORM\SuperMappedClass аннотации к моему классу программного обеспечения, но тогда я не нашел способа получить доступ к дочерним классам. Это лучшее наследство доктрины для этого конкретного случая? Будет ли конкретное наследование таблицы лучшим выбором? Я даже не знаю, возможно ли конкретное наследование, так как оно не описано в документе.

0

Решение

Задача ещё не решена.

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector