使用 PDO 创建模型层


Creating a Model Layer with PDO

我目前正在开发一个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);

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

任何帮助将不胜感激。

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

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

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

我看到的最接近的东西是Zend_Db它在PDO之上实现表和行网关。它支持连接相关表等等。

通常,您所要求的不会是那么"轻量级",它将是一个完整的ORM。就个人而言,如果我是你,我会选择一个体面的ORM。推进>= 1.5,教义1.2或教义2。