2010-07-01 74 views
0

如果轉到模型的基類,將找不到任何get或set方法。Symfony:關於獲取和設置基本模型類的方法的問題

這是因爲這些方法被稱爲「在空中」創建。

這是什麼意思,我懷疑它只是意味着它們是在需要的時刻創建的。

我是對的嗎?在基類內生成方法的方式有哪些優點?

問候

哈維

回答

1

學說使用PHP的magic methods實現,除其他事項外,get*()set*()方法,所以它會檢查,以確保該列存在,如果是這樣,獲取或設置相應的價值。

此外,Doctrine還會檢查您是否已經實施了您自己的個別獲取/設置方法,例如getSurname(),並且優先使用此方法直接設置列值。

+0

這基本上是正確的,但神奇的發生在sfDoctrineRecord(一個Symfony創建)而不是在Doctrine中。 – 2010-07-01 15:10:37

0

richsage是正確的,getXXXsetXXX方法是通過PHP的「魔術」__call方法完成的,但它不是Doctrine做的神奇。它是sfDoctrineRecord::__call,它將$record->getName()這樣的調用轉換爲$record->get('name')