我有一个非常简单的PHP应用程序:它允许用户创建,编辑和阅读帖子。基本的东西。
我有一个Database
类来处理连接和查询执行。问题是我希望我的模型(我使用自建的MVC框架)是干净的,所以我在Database
中创建了一些函数,例如CreatePost()
,EditPost()
等,它包含所需的所有SQL,因此我可以很好地从模型中调用它们:$database->CreatePost(/* post data */);
。
我应该将这些功能保留在Database
课程中,还是应该将它们放在其他地方(比方说,一堂课)?也许我甚至应该放弃函数的想法并在模型中明确地编写代码?
修改
作为@Tanuel Mategi mentioned,答案可能基于意见,但仍然 - 我试图弄清楚大多数人会根据公认的现代公约做什么,特别是Single Responsibility Principle。那么,这是否是一种责任?
答案 0 :(得分:1)
您可以使用DataMapper(http://martinfowler.com/eaaCatalog/dataMapper.html)。它是实体和数据库之间的一个层。在此课程PostMapper
上,您有方法__construct(\PDO $pdo)
,create($post)
,delete($post)
,save($post)
和update($post)
。所有方法都获得将保存在数据库中的Post对象。在每个方法上,您都要处理数据库。
要准备和执行数据库查询,您可以使用PDO。您不必使用自己的实现。
希望它有助于新想法。