2011-05-16 93 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。