2014-09-23 56 views
1

我很难找到是否可以将自定义函数添加到教义类。学说类,我可以添加自定义函数吗?

可以说我有

use Doctrine\ORM\Mapping as ORM; 

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

在我的课,我想说归说本身并不需要被存储在DATABSE而只是提供的某些价值功能的检查值有一些自定义函数。

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

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

我可以继续做,或者我需要将它们定义为xml文件或注释中的特殊字段吗?

+0

只需添加他们... – Crozin 2014-09-23 09:06:48

+0

我正在考虑这一点,但我宁愿确保我不必添加一些注释/ XML等,所以我不搞乱实体经理 – Tschallacka 2014-09-23 09:11:13

+0

你不必添加任何东西到学说的配置。实体类用于表示原始数据(DTO)并提供与此数据相关的一些基本/简单逻辑。 – Crozin 2014-09-23 09:18:41

回答

2

您可以安全地添加工作在简单成员类型上的函数,如果不添加任何注释,Doctrine会忽略它们。

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

但是,你应该记住:

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

这在documentation中有描述。由于您正在访问班级内的这些成员,所以不会调用像__get()这样的魔术方法。

相关问题