2010-08-27 33 views
4

我並不是說所有的模型都是表格。Zend中的每個表都必須映射到它自己的類嗎?

我在問的是每個表在使用Zend時是否還必須爲它自己定義專門的類?有沒有辦法擺脫這種尷尬的鍋爐板編碼。我們剛開始研究Zend(希望離開程序化PHP的土地!),我的同事認爲這可能最終會花費很多時間。

這是人們使用ORM解決方案的原因嗎?有沒有其他解決方法?

感謝您的回覆。

回答

7

在Zend表類遵循Table Data Gateway圖案,其通過定義

...保持所有SQL用於訪問單一表或視圖:選擇,插入,更新和刪除。其他代碼調用其與數據庫的所有交互的方法。

In the bookFowler不是剛性有關,他說,

非常簡單的情況下,你可以有一個單一的TDG是處理所有表中的所有方法。你甚至可以有一個視圖,甚至有趣的查詢沒有保存在數據庫中作爲視圖。

但是,除了能夠使用視圖,Zend_Db_Table不適合這一點。您可以爲多個表創建查詢,但這些查詢必須直接通過Zend_Db_Adapter進行,或者在使用連接時通過關閉完整性檢查來完成。否則,你必須使用由Zend_Db_Table Relationships提供的API

所以是的,一個實例應該對應一個表或視圖。您不需要爲此創建類,但是如果您不打算擴展類。 Zend_Db_Table_Definitions允許您即時配置Zend_Db_Table實例。

請注意,TDG是一個DataSource體系結構模式,而不是對象關係模式。它的目的不是幫助impedance-mismatch,而是從業務邏輯中分離數據庫訪問代碼。

相關問題