我已經在這裏讀亞歷傑瓦西奧出色的服務層系列:http://www.devshed.com/cp/bio/Alejandro-Gervasio/,我注意到他也是誰主張PHP集合的開發者之一,在http://www.devshed.com/c/a/PHP/PHP-Service-Layers-Handling-Entity-Collections/1/在PHP中創建集合類的目的是什麼?
這是爲什麼?爲什麼要創建一個通過使用數組來模擬簡單關聯數組的類?
我已經在這裏讀亞歷傑瓦西奧出色的服務層系列:http://www.devshed.com/cp/bio/Alejandro-Gervasio/,我注意到他也是誰主張PHP集合的開發者之一,在http://www.devshed.com/c/a/PHP/PHP-Service-Layers-Handling-Entity-Collections/1/在PHP中創建集合類的目的是什麼?
這是爲什麼?爲什麼要創建一個通過使用數組來模擬簡單關聯數組的類?
我沒有閱讀文章,但我可以告訴你爲什麼我這樣做一般地講:
關於第1點 - 構建好的動態查詢不能完成排序和搜索嗎?另外,我通常在工具類中編寫助手函數,以便通過屬性或元素進行二維排序,然後可以從任何地方調用它們。我的意思是我看到你如何將這個抽象集合到集合類中,從我的角度來看,這只是我的開銷。你能說出點2和點3的例子嗎? – Swader 2012-04-09 12:45:13
如果我可以完成與我在原則2所觀察到的答案:
教義,您使用Collection
界面,你不關心它是如何工作的。該界面提供了過濾,排序,...
但Doctrine提供Collection
名爲PersistentCollection
的實施。你甚至不知道你在使用它,因爲你使用了這個接口,但是對於這個特殊的集合,當你過濾/搜索/排序集合時,Doctrine將能夠智能和透明地進行數據庫查詢。它還將使Doctrine只有在訪問(延遲加載)時才能加載集合的內容(對象列表),這可以幫助獲得性能。
這對於一個PHP數組來說是不可能的,您將不得不從數據庫完全加載它,然後執行您的操作。
我曾經讀過一本關於高級php操作技巧的書,並且對此進行了詳細的討論。顯然他們這樣做是因爲它允許你使用像數組一樣的對象。 – Kristian 2012-04-08 21:13:08
你可以將「php oop」縮寫爲「poop」,fyi。 – 2013-04-05 23:25:34