我在Symfony 2框架中有3个实体:
这些实体有一个共同属性,因为它们具有ManyToMany关系:
/**
* @ORM\ManyToMany(targetEntity="Fccq\CoreBundle\Entity\Tag", cascade={"persist"})
*/
private $tags;
还有一些方法:
/**
* @param array $tags
*/
public function addListTags($tags)
{
foreach($tags as $tag)
{
$this->addTag($tag);
}
}
/**
* @param Tag $tag
*/
public function addTag(\Fccq\CoreBundle\Entity\Tag $tag)
{
if (!$this->tags->contains($tag)) {
$this->tags->add($tag);
}
}
/**
* @param Tag $tag
*/
public function removeTag(\Fccq\CoreBundle\Entity\Tag $tag)
{
$this->tags->removeElement($tag);
}
我不希望这个代码重复,所以我开始实现“traits”。工作正常,但不支持php 5.3(我的生产环境)。 简单继承不是一个好的解决方案,因为我的User实体已经从另一个类继承。
有什么想法吗? THX
答案 0 :(得分:2)
如果您仍然使用继承,将这些函数放在基本标记类中,并通过您的机会,公司和用户扩展的类扩展它,该怎么办?我不知道其他解决方案,因为您无法在实体类中使用辅助函数(或者至少不建议这样做)。也许别人还有一些想法......