2011-05-16 77 views
3

我目前正在開發一個MVC應用程序框架,並且我對於應該如何構建模型圖層的方式提出了一些建議。使用PDO創建模型圖層

該模型被構造成使得每個模型數據庫中該應用程序中的映射到一個表中,因此,典型的應用程序必須

  • 配置
  • 主題
  • 論壇

並且每個映射到那裏名爲PHP文件,例如app/models/configuration.php

現在我有正創建父數據庫類能夠處理特定的表中的數據問題,例如:

class PDOModel 
{ 
    public function __construct() 
    { 
     $this->__Communicator = Registry::getPDOInstance(); 
    } 

    public function getSingle($id) 
    { 
     return /*Row*/; 
    } 

    /*Etc*/ 
} 

然後像這樣的應用程序模型的

class Model_Topic extends PDOModel 
{ 
    protected $__id_column = 'id'; 
} 

,然後在我的控制器內我可以這樣使用:

$Topic = $this->model->topic->get(22); 

但我也想考慮自動連接表,以及有沒有簡單的輕關於這些的tweight庫已經過測試並符合我的要求。

任何幫助將不勝感激。

回答

5

您的基礎模型類不應該從數據庫訪問類繼承。相反,它應該使用數據庫類(或映射器,誰說它必須始終是一個數據庫?),然後提供ORM方法(獲取,插入,更新等...)。

正如其他人發佈的那樣,您應該使用許多優質預建解決方案之一。至於尋找一個輕量級的ORM,其他人已經問過這個問題。下面就這些問題一個一個鏈接:

https://stackoverflow.com/questions/1995834/looking-a-lightweight-php-orm

+0

我只是讀了上http://phpdatamapper.com/,看起來非常有趣 – RobertPitt 2011-05-17 09:06:42

0

最近看到的是Zend_Db,它在PDO之上實現了表和行網關。它支持加入相關表格,不支持。

通常情況下,你所要求的不是所有「輕量級」,它將成爲一個完整的ORM。就個人而言,如果我是你,我只會去一個體面的ORM。 Propel> = 1.5,Doctrine 1.2或Doctrine2。