PHP-MVC-获取视图

PHP-MVC-获取视图,php,model-view-controller,oop,Php,Model View Controller,Oop,大家好 在PHP上下文中寻找有关MVC的帮助。目前,我正在构建一个小型、轻量级的MVC框架,以帮助加快工作中的应用程序开发。消除内联代码是一个漫长而艰难的分离过程——至少在大量项目的开销和使用它的诱惑面前是如此 我了解MVC的大部分基本要求,并且我已经开始在我的新框架中将一些以单例模式存在的类作为实用工具进行移植(这些类主要是执行站点服务的基本“处理程序”——一个用于文件上传、授权、包装PDO数据库查询、错误打印等的类) 在阅读了大量文档之后,我似乎无法理解的是实例化视图的最佳方法。在我的旧的低

大家好

在PHP上下文中寻找有关MVC的帮助。目前,我正在构建一个小型、轻量级的MVC框架,以帮助加快工作中的应用程序开发。消除内联代码是一个漫长而艰难的分离过程——至少在大量项目的开销和使用它的诱惑面前是如此

我了解MVC的大部分基本要求,并且我已经开始在我的新框架中将一些以单例模式存在的类作为实用工具进行移植(这些类主要是执行站点服务的基本“处理程序”——一个用于文件上传、授权、包装PDO数据库查询、错误打印等的类)

在阅读了大量文档之后,我似乎无法理解的是实例化视图的最佳方法。在我的旧的低效设计中,我会关闭$\u GET变量以从主视图中切换输出。这似乎是一种非常糟糕的完成工作的方式

我已经研究了CodeIgniter,似乎在该框架中有用于加载视图的预定义函数。这种应用程序设计的最佳方法是什么?它是否是一个基于类的“链接工厂”,利用相同的变量获取内容,选择适当的视图文件,并将其放置在页面流中?另外,在不使用开关的情况下,如何将新视图包含在根索引中的页眉和页脚之间?这是唯一让我困惑的事情——我真的希望我的措辞足够清楚

一如既往地谢谢大家

我强烈推荐Matt Zandstra的“PHP对象、模式和实践”。这本书中有很多内容是关于创建MVC框架的,对您非常非常有帮助

它涵盖了这些模式(您也可以在其他地方进行研究):

  • 前端控制器
  • 应用程序控制器
  • 页面控制器
  • 模板视图
  • 视图辅助对象

虽然我建议使用一个成熟、灵活的框架(如Zend)来回答您的问题,但以下是我所看到的涉及到的步骤(我知道我不久前就不再尝试写这种东西了,这是基于我对所使用的现有框架的理解)

  • 某种类型的路由器解析请求并将其转换为具有操作(或采用默认值)和可选参数的控制器对象。然后,路由器调用与动作匹配的控制器对象的函数
  • 控制器对象(通常从通用控制器对象扩展而来)处理请求并确定要传递给视图的数据以及要使用的视图。大多数框架基于动作设置默认视图,但最终由控制器决定使用哪个视图
  • 视图获取数据并显示

  • 这是我非常简化的过程。

    如果你不是为了一个爱好项目而是在工作中使用MVC框架,那么你为什么要自己构建MVC框架呢?有几个很棒的PHP MVC框架,它们都经过深思熟虑,非常成熟,并且有很好的文档记录。为什么要从头开始重新发明轮子?一个很好的观点。我主要感兴趣的是,这样做是为了更好地理解这种方法本身,并扩展我自己在编写代码方面的通用性。我还对自己扩展程序以实现它可能需要的任何功能感兴趣,以便使它尽可能轻量级。但我的兴趣主要是学术性的。我有一个非常大的项目,这是一段时间以来我第一次可以单独专注于这个项目,我希望尽可能从头开始构建MVC。如果你没有什么经验,不要在做“大型工作项目”时开始尝试。使用现有的成熟解决方案。如前所述,Codeigniter是一个很好的选择。Codeigniter是一个非常好的选择。我被Codeigniter吸引,因为它似乎是面向熟悉php核心功能的开发人员的最透明的框架。我们将对此进行研究。谢谢斯科特!谢谢你的意见-我刚刚购买了上面建议的PDF格式的书-从这一点到你的解释,我想我开始明白我的理解中缺少了什么。@TimothyCoetzee我不会不同意你的意见。@TimLytle你看起来精通PHP和MVC你介意看看这个问题吗