Я пытаюсь создать подкласс сущности Doctrine 2, чтобы добавить несколько «вспомогательных» функций, которые я хотел бы использовать.
Например, это моя сущность:
namespace Project\Entity;
class Product
{
private $name;
private $idProductCategory;
}
Сопоставление осуществляется с помощью файлов XML.
Затем я пытаюсь расширить его:
namespace Project\Entity;
class ProductJSON extends Product {
public function toJSON() {
/* ... */
}
}
Когда я пытаюсь использовать этот объект в Doctrine:
$a = $entityManager->getRepository('\Project\Entity\ProductJSON');
Я получаюНе найден файл сопоставления с именем Project.Entity.ProductJSON.dcm.xml» ошибка.
Что совершенно верно, потому что я не хочу никаких дополнительных карт.
Я внимательно прочитал документы Доктрины и о сопоставленных суперклассах (Доктрина: расширение класса сущностей), но, насколько я понимаю, это для расширения сущностей в смысле БД.
Я не забочусь о базе данных / отображении, я просто хочу расширить сущности в PHP, чтобы использовать объекты без проблем в моем приложении.
Как достичь этой цели?
Вам не нужен подкласс для добавления дополнительных методов. Просто добавьте методы к вашему классу сущности — Doctrine просто проигнорирует их, потому что к ним не прикреплена информация о сопоставлении.
Например.
class Product
{
private $name;
private $idProductCategory;
/* ... */
public function toJSON() {
/* ... */
}
}
Других решений пока нет …