我在我正在从事的项目中使用 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 的实体定义是否容易出错?因为确实没有检查语法是否有效,并且仅在“生成”时间生成错误。有没有办法在开发过程中更早地自动化/检查错误?
谢谢!