我有两个条令实体非常相似,但并不相同。
我曾考虑创建一个接口或使用抽象方法在它们之间共享重复的代码,但不确定这是否是这方面的最佳实践。
我有两个独立的实体,它们有许多非常相似的setter和getter。
在这种情况下,在实体之间共享代码的最佳方法是什么?
您可以使用Embeddables
:
http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/tutorials/embeddables.html
从条令的例子来看,我们有一个User
和Address
。
对于Company
实体,Address
也是embedded
。
/** @Entity */
class User
{
// Here we embed our Address entity
/** @Embedded(class = "Address") */
private $address;
}
/** @Entity */
class Company
{
/** @Embedded(class = "Address") */
private $address;
}
/** @Embeddable */
class Address
{
// Our `shared` entity
/** @Column(type = "string") */
private $street;
/** @Column(type = "string") */
private $postalCode;
/** @Column(type = "string") */
private $city;
/** @Column(type = "string") */
private $country;
}
阅读文档了解更多信息:
http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/tutorials/embeddables.html
如果您的实体属于同一个域,我建议您考虑映射的超类。如果不是,PHP特性也是一个不错的选择