Бандлы для Symfony

FAQ по бандлам.

Родительский класс сущности в бандле

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

Например, мой бандл параметров товаров для интернет-магазина определяет сущности Product и Category, где определяются зависимости от сущностей бандла. И эти сущности Product и Category скорее всего должны быть дополнены специфическими полями в проекте.

Можно в такой ситуации сделать так:

namespace Onest\EshopParamsBundle\Entity;
// Родительский класс
/**
 * @ORM\MappedSuperclass
 */
class Product
{
    /**
     * @ORM\OneToMany(targetEntity="Onest\EshopParamsBundle\Entity\Parameter", mappedBy="product", cascade={"persist", "remove"})
     */
    protected $parameters;
...
// логика, которую нужно будет унаследовать
...
}
namespace App\Entity;
// Дочерний класс
/**
 * @ORM\Entity
 */
class Product   extends \Onest\EshopParamsBundle\Entity\Product
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;
...
}

Ссылка в тему:

https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/inheritance-mapping.html

Минимальный состав бандла

Структура бандла почти повторяет структуру обычного проекта на Symfony.

https://github.com/prawas/symfony-bundle-skeleton