如果轉到模型的基類,將找不到任何get或set方法。Symfony:關於獲取和設置基本模型類的方法的問題
這是因爲這些方法被稱爲「在空中」創建。
這是什麼意思,我懷疑它只是意味着它們是在需要的時刻創建的。
我是對的嗎?在基類內生成方法的方式有哪些優點?
問候
哈維
如果轉到模型的基類,將找不到任何get或set方法。Symfony:關於獲取和設置基本模型類的方法的問題
這是因爲這些方法被稱爲「在空中」創建。
這是什麼意思,我懷疑它只是意味着它們是在需要的時刻創建的。
我是對的嗎?在基類內生成方法的方式有哪些優點?
問候
哈維
學說使用PHP的magic methods實現,除其他事項外,get*()
和set*()
方法,所以它會檢查,以確保該列存在,如果是這樣,獲取或設置相應的價值。
此外,Doctrine還會檢查您是否已經實施了您自己的個別獲取/設置方法,例如getSurname()
,並且優先使用此方法直接設置列值。
richsage是正確的,getXXX
和setXXX
方法是通過PHP的「魔術」__call
方法完成的,但它不是Doctrine做的神奇。它是sfDoctrineRecord::__call
,它將$record->getName()
這樣的調用轉換爲$record->get('name')
。
這基本上是正確的,但神奇的發生在sfDoctrineRecord(一個Symfony創建)而不是在Doctrine中。 – 2010-07-01 15:10:37