我有两个非常相似的学说实体,但不一样。
我正在考虑创建一个接口或使用抽象方法在它们之间共享重复的代码,但不确定这是否是最佳实践。
我有两个独立的实体,其中有许多非常相似的setter和getter。
在这种情况下,哪种方法可以在实体之间共享代码?
答案 0 :(得分:2)
Embeddables
:http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/tutorials/embeddables.html
从学说示例中,我们有User
和Address
。
Address
实体的embedded
也是Company
。
/** @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
答案 1 :(得分:0)
如果您的实体属于同一个域,我建议您考虑mapped superclasses。 如果不是PHP Traits也可能是一个不错的选择