在纯PHP中有没有(简单的)分离模型的方法,好的方法是什么?

在纯PHP中有没有(简单的)分离模型的方法,好的方法是什么?,php,database,oop,frameworks,Php,Database,Oop,Frameworks,我要寻找的是一种从组成网站的一组PHP文件中删除模型的方法。(对我来说)很难解释 我所说的模型是指MVC意义上的模型 例如,我有一个网站: index.php 关于.php shop.php checkout.php 上述所有PHP文件都使用相同的数据库。我通过使用view.php文件添加模板来分隔视图,该文件使用传递给它的值呈现正确的模板 我不想使用已经存在的框架。从某种意义上说,我正在考虑写我自己的作品,其中只有我需要用到的部分 如果有人想解释为什么没有必要这样做,或者说这是一种更好的做

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

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

例如,我有一个网站:

  • index.php
  • 关于.php
  • shop.php
  • checkout.php
上述所有PHP文件都使用相同的数据库。我通过使用view.php文件添加模板来分隔视图,该文件使用传递给它的值呈现正确的模板

我不想使用已经存在的框架。从某种意义上说,我正在考虑写我自己的作品,其中只有我需要用到的部分

如果有人想解释为什么没有必要这样做,或者说这是一种更好的做事方式,那么我也愿意接受


提前感谢。

作为一个编写了自己的PHP框架的人,我可以告诉你,使用框架是一件很好的事情。也就是说,从编写自己的框架开始——你会对框架的真正结构和实用性获得更多的欣赏

你会想了解这个问题。它是您可以在框架中开发的对象种类的主要区别

当您编写了文件/控制器(假定为MVC)包含的一些模型后,您将开始看到从何处抽象出一个“基本模式”,其他人从中扩展(提示:DB singleton)


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

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

  • 首先创建您的域模型。我假设您是以面向对象的方式进行的,所以请考虑您的领域问题,并创建最能代表您的问题的抽象。试着让它与持久性分离
  • 测试很多,经常测试。在创建域模型时尝试测试(并运行测试)。当您在6个月内添加新功能并希望确保没有损坏任何东西时,这将特别有价值。如果您可以将域模型与任何外部对象(如持久层或第三方web服务)分离,那么测试就会简单得多。今天,它几乎是PHP中单元测试的事实标准
  • 你不必从头开始写。有很多库可以帮助您简化MVC框架的开发,这样您就可以专注于真正想要开发的内容。例如,您可以使用来处理页面路由,也可以将持久性内容委托给
  • 分析其他框架如何解决问题总是很好的。您可能希望查看产品,例如或甚至检查如何处理其视图系统。另外,如果你想了解一些完全不同的东西,你可以看一下微软的架构
回到你最初的问题,对我来说,关键是尽可能地使不同层次的事物保持解耦。虽然我只使用了版本1,但条令2似乎是持久性的一个很好的候选者,因为它允许您创建一个完全独立于DB的域模型。这是一个巨大的进步。第二件事是如何处理视图系统。这完全取决于开发人员的口味。例如,我喜欢用对象对所有事物建模,所以我喜欢Seaside的方法。另一方面,Elgg处理视图的方式非常好,可能更适合PHP中的处理方式。在决定走哪条路之前,做一些研究可能会让你受益匪浅


HTH

单例是一种反模式。查尔斯:这不是一个聪明的工程命题。每一种模式在某个地方都是合适的。对于一个非常简单的框架来说,DB单例是一个很好的解决方案。单例很少适用于任何现代PHP框架。如果您需要全局设置,请使用全局设置。在没有愚蠢的开销的情况下,您会得到同样的高度耦合的难以测试的结果。