2014-09-23 51 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()這樣的魔術方法。

相關問題