其他分享
首页 > 其他分享> > 我的学说实体应该实现接口吗?

我的学说实体应该实现接口吗?

作者:互联网

有人告诉我应该对我的Doctrine POPO实体进行编码以实现接口.我的理解是,对接口进行编码是最佳实践.

有人可以为我的Doctrine实体实现接口提供一些好处.我想确保在花时间编写所有实现接口的实体之前,我已经了解了进行此抽象的好处.下面是一个示例(为简单起见,请注意包括了“ Doctrine”注释):

<?php
class User implements UserInterface()
{
    function getName() {
        return $this->name;
    }

    function setName($name) {
        $this->name = $name;
    }

    function addPermission(Permission $permission) {
        $this->permissions[] = $permission;
    }
}

interface UserInterface()
{
    function getName();

    function setName($name);

    function addPermission(Permission $permission);
}

解决方法:

我将仅在数据库实体范围内回答此问题.

一般来说,实体不需要实现接口.但是,也有例外.

>将您的实体传递给第三方代码时.
与UserInterface一样,某些第三方代码希望能够收集有关某个对象的数据.用户的登录名和电子邮件(与Symfony一样).
>以第三方身份分发代码时.
一个示例是RoleInterface.您的捆绑包可以管理实体,例如FOSUserBundle,但是最终用户可能不喜欢您的实现,甚至不希望它们存储在数据库中.使用接口可以使我们重新实现现有代码,而不会造成麻烦. (您的捆绑软件应检查接口而不是类).
>未来情况可能会发生变化.
硬编码对象本质上将它们与代码联系在一起.您提到了学说,但是如果将来您想迁移以推进该怎么办?像上面的第2点一样,接口使过渡更加容易.
>测试
当只需要接口的实现时,创建模拟对象要容易得多.
>团队发展
就像上面的第4点.一个类在其创建过程中可能会发生变化,这通常导致整个代码中方法调用的更新.当有多个开发人员时,这会导致问题.拥有通用的界面会迫使每个开发人员都遵循该界面所控制的规则.

标签:doctrine-orm,symfony,doctrine,php
来源: https://codeday.me/bug/20191120/2044552.html