使用PDO创建模型层

时间:2011-05-16 22:01:23

标签: php model pdo abstraction

我正在开发一个MVC应用程序框架,我已经就我应该构建模型层的方式提出了一些建议。

构建模型,以便每个模型都映射到数据库中用于该应用程序的表,因此典型的应用程序将具有

  • 配置
  • 主题
  • 论坛

并且每个都将映射到名为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);

但我也想考虑自动连接表,是否有任何简单的轻量级库已经过测试并符合我的要求。

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:5)

您的基础模型类不应继承数据库访问类。相反,它应该使用数据库类(或mapper,谁说它必须始终是一个数据库?)然后提供ORM方法(获取,插入,更新等)。

正如其他人发布的那样,您应该使用许多优秀的预建解决方案之一。至于寻找轻量级ORM,其他人之前已经问过这个问题。以下是其中一个问题的链接:

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

答案 1 :(得分:0)

我见过的最接近的是Zend_Db,它在PDO之上实现了Table和Row网关。它支持加入相关表格,不支持。

通常你要求的不是所有“轻量级”,它将是一个完整的ORM。就个人而言,如果我是你,我会选择一个体面的ORM。 Propel> = 1.5,Doctrine 1.2或Doctrine2。