我正在开发一个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);
但我也想考虑自动连接表,是否有任何简单的轻量级库已经过测试并符合我的要求。
任何帮助都将受到高度赞赏。
答案 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。