Doctrine类,我可以添加自定义函数吗?

时间:2014-09-23 09:05:26

标签: php doctrine-orm

我很难找到是否可以向教条课程添加自定义函数。

让我说我有

use Doctrine\ORM\Mapping as ORM;

/**
 * Map
 */
class Map
{
     /**
     * @var integer
     */
    private $id;
     /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}

在我的课程中,我想要一些自定义函数,它们返回的值本身并不需要存储在数据库中,而只是提供某些值函数的检查。

例如,我想添加一个函数isAboveTen();

function isAboveTen()
   {
   return this->id > 10;
   }

我可以直接执行此操作,还是需要将它们定义为xml文件或注释中的特殊字段?

1 个答案:

答案 0 :(得分:2)

您可以安全地添加处理简单成员类型的函数,如果您不添加任何注释,Doctrine将忽略它们。

您是否应该避免这样做的问题取决于您的整体架构和编码指南。正如评论中所提到的,存在可能在实体内部与实体外部的逻辑的风格。

然而,您应该记住:

  

任何实体类的所有持久属性/字段应始终为私有或受保护,否则延迟加载可能无法按预期工作。如果您序列化实体(例如Session),则应保护属性(请参阅下面的序列化部分)。

documentation中描述了这一点。由于您正在课堂上访问这些成员,因此不会调用__get()等魔术方法。