Всем привет, может кто посоветует где правильней/лучше разместить логику когда есть несколько сущностей (Doctrine entity) которые имплеменируют общий интерфейс?
Ситуация такая, есть интерфейс Request:
<?php
namespace AppBundle\Entity;
interface Request
public function approve();
public function reject();
}
и несколько сущьностей: Invite и JoinRequest в первом компания приглашает человека в компанию, во втором наоборот.
Пример Invite:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/** @ORM\Entity */
class Invite implements Request
{
/**
* @ORM\Column(type="integer") @ORM\Id @ORM\GeneratedValue
* @var int
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Company")
* @ORM\JoinColumn(nullable=false)
* @var Company
*/
private $company;
/**
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(nullable=false)
* @var User
*/
private $user;
public function approve()
{
// Some logic here. Add user to company, send mail, add flash message etc...
}
public function reject()
{
// Same
}
// Getters/Setters.
}
также будут и другие типы сущностей (запрос на обмен контактами и т.д.)
Насколько я понял размещать какую либо бизнес логику в самих Doctrine Entity считаеться плохой практикой да и передавать зависимости в Entity (mailer, twig templating, flash messages) выглядит не очень красиво, в контроллере тоже, так что единственное что мне приходит в голову это выделить под все эти Request Entity отдельный сервис, или даже свой под каждый, но не убивает ли это весь смысл полиморфизма?