首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子类原则2实体

子类原则2实体
EN

Stack Overflow用户
提问于 2016-06-16 14:02:45
回答 1查看 263关注 0票数 1

我正在尝试子类一个Doctrine 2实体,以添加一组我想使用的“助手”函数。

例如,这是我的实体:

代码语言:javascript
复制
namespace Project\Entity;
class Product
{
    private $name;
    private $idProductCategory;
}

映射是通过XML文件完成的。

然后,我试着扩展它:

代码语言:javascript
复制
namespace Project\Entity;
class ProductJSON extends Product {
    public function toJSON() {
        /* ... */
    }
}

当我试图在Doctrine中使用这个对象时:

代码语言:javascript
复制
$a = $entityManager->getRepository('\Project\Entity\ProductJSON');

我得到了“没有找到名为Project.Entity.ProductJSON.dcm.xml的映射文件”错误。这是完全正确的,因为我不想要任何额外的映射。

我曾广泛阅读过Doctrine和有关映射超类(Doctrine: extending entity class)的内容,但据我所知,这是为了在DB意义上扩展实体。

我不关心数据库/映射,我只想扩展实体PHP,以便在我的应用程序中无缝地使用对象。

如何实现这一目标?

EN

回答 1

Stack Overflow用户

发布于 2016-06-16 14:14:28

添加其他方法不需要子类。只要将这些方法添加到实体类中,Doctrine就会忽略它们,因为它们没有附加任何映射信息。

例如。

代码语言:javascript
复制
class Product
{
    private $name;
    private $idProductCategory;

    /* ... */

    public function toJSON() {
        /* ... */
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37861508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档