我正在學習doctrine2,並且如何自動調用構造函數時遇到問題。 例如,在我的實體我有
/**
* @Entity
*/
class User{
....
public function __construct() {
exit('in');
}
}
,當我得到的對象是這樣的:
$userObj = $em->find('User', 1);
我得到從數據庫對象,但是構造函數永遠不會被調用。 我想提出一些共同的東西在構造,如驗證規則,甚至把示例代碼學說文檔一樣
$this->comments = new ArrayCollection();
,當我創建一個用戶喜歡
在代碼中創建新的對象這ofcourse工作$user = new User(); //now constructor works just fine
現在,獲取實體的「正確」方式是什麼?我懷疑我必須手動調用構造函數每次我用戶$ em-> find()與$ user0bj - > __構造(); ?這將有點吸吮然後......或者我應該使用其他的東西 - > find()來正確地獲得單個實體? 我知道我可以用戶@PrePersist,而我正在使用它來實際進行驗證檢查等。 我想我可能在這裏錯過了一些東西,或者我試圖以糟糕的方式使用構造函數。感謝您的任何解釋和指導!
到目前爲止,我使用了在構造函數和@PostLoad事件中都調用的單獨的setUp()方法,它設置了當使用新的Obj()創建對象時需要在對象中設置的對象。並且它在從數據庫中提取obj時被調用。它可能會幫助有類似困境的人。 – Dalibor 2011-04-05 14:29:51