3

我正在寻找的是一种从构成网站的一组 PHP 文件中删除模型的方法。(对我来说)很难解释。

我所说的模型是指 MVC 意义上的模型。

例如说我有这个网站:

  • 索引.php
  • 关于.php
  • shop.php
  • 结帐.php

以上所有 PHP 文件都使用相同的数据库。我通过使用 view.php 文件添加模板来分离视图,该文件呈现正确的模板并传递给它的值。

不想使用已经存在的框架。我正在考虑在某种意义上写我自己的,只有我需要在其中使用的位。

如果有人想解释为什么这不是必需的,或者更好的做事方式,那么我也愿意。

提前致谢。

4

2 回答 2

2

编写自己的 MVC 框架需要时间,但在此过程中您会学到很多东西。所以,如果你有时间/资源去做,我绝对鼓励你这样做。在这种情况下,这里有一些可以帮助您的小建议:

  • 首先创建您的域模型。我假设您将采用 OO 方式,因此请考虑您的域问题并创建最能代表您的问题的抽象。尽量使其与横切关注点(如持久性)脱钩。
  • 多测试,多测试。在创建域模型时尝试测试(并运行测试)。当您在 6 个月内添加新功能并希望确保您没有破坏任何东西时,这将特别有价值。如果您可以将您的域模型与任何外部(如持久层或第三方 Web 服务)分开,那么测试将会简单得多。今天, PHPUnit几乎是 PHP 单元测试的事实标准。
  • 您不必从头开始编写所有内容。有很多库可以帮助您简化 MVC 框架的开发,以便您可以专注于您真正想要开发的内容。例如,您可以使用Slim来处理页面路由,或者您可以将持久性内容委托给Doctrine 2
  • 分析其他框架如何解决问题总是很好的。您可能想查看SymfonyKohana 之类的产品,甚至查看Elgg如何处理其视图系统。此外,如果你想看看完全不同的东西,你可以看看Seaside的建筑。

回到你原来的问题,对我来说,关键是让不同层的事情尽可能地分离。虽然我只使用了版本 1,但 Doctrine 2 似乎是一个很好的持久化候选者,因为它允许您创建一个完全独立于数据库的域模型。这是一大步。第二件事是如何处理视图系统。这完全取决于开发人员的口味。例如,我喜欢用对象建模一切,所以我喜欢 Seaside 的方法。另一方面,Elgg 处理视图的方式非常好,并且可能更适合 PHP 中处理事物的方式。这是您在决定要走的路线之前进行一些研究的时候。

高温高压

于 2012-11-28T12:10:42.707 回答
0

作为一个编写了自己的 PHP 框架的人,并且和你一样敏感,我可以告诉你,使用框架是一件好事。也就是说,从编写自己的代码开始——您将对框架的真实结构和实用性有更多的了解。

您将想要了解单例 对象 模式。它是您可以在框架中开发的对象种类的主要区别。

当您编写了一些您的文件/控制器(假设 MVC)包含的模型时,您将开始看到在哪里抽象其他扩展的“基本模式”(提示:DB 单例)。

当您开始引入配置等时,您将拥有您的第一个框架对象,所有其他基础都将从中进行扩展。

于 2012-11-28T02:30:31.377 回答