【发布时间】:2010-03-17 18:46:35
【问题描述】:
我正在用 PHP 为我的 web 项目创建一个小型框架,这样我就不必为每个新网站一遍又一遍地做基本工作。创建第二个 CakePHP 或 Codeigniter 不是我的目标,我也不打算使用任何可用的框架来构建我的网站,因为我更喜欢使用我自己创建的东西。
当涉及到核心结构、请求处理等部分时,我在设计和编码框架时没有遇到任何问题,但我在为我的模块设计数据库接口时遇到了困难。
我已经考虑过使用 MVC 模式,但发现这对于我相当小的项目来说有点矫枉过正。
所以我面临的确切问题是我的框架模块(例如,viewCustomers 可能是一个模块)应该如何与数据库交互。
将 SQL 直接混入 PHP 代码是否(仍然)是个好主意? (会是“旧方式”:
mysql_query( 'SELECT firstname, lastname(.....))?-
我怎样才能抽象出如下查询?
SELECT firstname, lastname FROM customers WHERE id=X
MySQL 的“助手”功能是否会像
$this->db->customers->getBy( 'id', $x );
是个好主意?
我不太确定,因为在处理更复杂的查询(例如上面非常琐碎的查询)时,它们往往变得无用。
MVC 中的“模型”模式是我解决这个问题的唯一真正选择吗?
您目前使用什么来解决上述问题?
【问题讨论】:
-
“...因为我更喜欢使用我自己创造的东西”...那么这就是要努力的事情。严重地。您将为您自己、您的同事和您的客户提供很大的帮助。
-
如果你很幸运,你最终会得到一个有缺陷的、功能低劣的 CakePHP 克隆。世界需要的是另一个 PHP 包装器。对。
-
当我第一次构建我的 ORM 然后将我的代码移植到它时,我简直不敢相信。我从我的模型中删除了数百行不再需要的代码。现在一切都小了很多。当然,我的 ORM 只有一个文件大小。对于那些浪费的 +500kb 库,我不会说同样的话。
-
@lamas:您可能患有“非此处发明”综合症。我也时常患有的一种综合症:en.wikipedia.org/wiki/Not_Invented_Here
-
不知何故,如果有人在 SO 上提出一个无法用一个词回答的问题,他可能会得到免费的心理分析(我的意思是这个)。这不像我只使用我自己提出的东西,或者你看到我现在上传我自己的更好的 SO 克隆吗? fireeyedboy:不,我没有患上“非在这里发明”综合症。 我只是不想现在用 2 到 5MB 的 Doctrine ORM 来破坏我的项目
标签: php mysql design-patterns