0

我在我正在从事的项目中使用 Doctrine ORM。尽管为数据库提供对象接口的想法很好,但我对实体类的实现有疑问。

让我们考虑这个用户实体的例子:

<?php

/**
 * @Entity @Table(name="users")
 **/
class User
{
    /**
     * @Id @GeneratedValue @Column(type="integer")
     * @var int
     **/
    protected $id;

    /**
     * @Column(type="string")
     * @var string
     **/
    protected $name;

    /**
     * @OneToMany(targetEntity="Bug", mappedBy="reporter")
     * @var Bug[]
     **/
    protected $reportedBugs = null;

    /**
     * @OneToMany(targetEntity="Bug", mappedBy="engineer")
     * @var Bug[]
     **/
    protected $assignedBugs = null;

    // .. (other code)
}

现在,一切都很好,花花公子,但我想知道如果我在其中一个评论中犯了拼写错误会发生什么,例如我写道:

@Table(name="users)

代替

@Table(name="users")

IDE 不会因为它的注释而抱怨,并且当我运行“生成实体”命令时我只会得到一个错误(它在生成代码、创建表、列和关系的背景中发挥了魔力)。

所以我的问题是: ORM 的实体定义是否容易出错?因为确实没有检查语法是否有效,并且仅在“生成”时间生成错误。有没有办法在开发过程中更早地自动化/检查错误?

谢谢!

4

1 回答 1

0

IMO,您强调的问题可以与在 PHP 中使用错误的变量($var1 而不是 $var2)进行比较。就此而言,在所有动态语言中。

但是,如果您编写单元测试,则可以避免您突出显示的问题。

于 2012-07-16T14:55:13.087 回答