我在我正在开发的项目中使用Doctrine ORM。虽然为db提供对象接口的想法很好,但我对实体类的实现有疑问。
让我们考虑一下这个用户实体的例子:
<?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不会因为它的注释而抱怨,而且我只会在运行“generate entities”命令时出错(这在生成代码,创建表,列和关系的背景中起到了作用)。
所以我的问题是: ORM的实体定义是否容易出错?因为如果语法有效,则确实没有检查语法,并且只在'生成'时生成错误。有没有办法在开发早期自动化/检查错误?
谢谢!
答案 0 :(得分:0)
IMO,您突出显示的问题可以与使用PHP中的错误变量进行比较($ var1而不是$ var2)。就此而言,在所有动态语言中。
但是如果你编写单元测试,你可以避免你突出显示的问题。