我们应该知道开发自己的PHP MVC框架工作(例如codeigniter)

时间:2019-06-08 15:42:50

标签: php model-view-controller

一个面试官问我一个有趣的问题:“如果我要您创建自己的MVC框架,您应该知道什么?”除了将前端控制器作为基础并相应地重定向我们的请求外,我很难给出具体的答案。如果有人可以阐明一点,我们将很高兴。

3 个答案:

答案 0 :(得分:4)

您的答案应该是

  • 基于MVC的应用程序遵循separation of concerns原则。首先分离:UI逻辑与业务逻辑(“ M” 组件)。第二个分离(保留UI逻辑):用户请求分配逻辑(“ C” 组件)与表示逻辑(“ V” ”组件)。
  • “ M” 组件不知道任何其他应用程序组件,并且以这种方式实现,即可以由多个应用程序(甚至不同类型)共享。
  • 每个组件都可以以不同的方式建模和实现。根据需求,可以在这里讨论哪些对象应该使用以及它们如何相互交互... 换句话说,这是您“几乎没有给出确切答案的部分” 。下面是一个示例,展示了我在使用MVC的Web应用程序工作流程中选择的方法。
  • (使用MVC模式)(开发应用程序)的优点:组件可重用性,良好的可测试性,基于开发人员的专业知识可以轻松地对某些组件进行更改的可能性。通过查看/阅读此答案结尾处发布的第一批​​资源,可以发现其他优势。
  • 缺点:增加了复杂性(我个人看不到其他)。
  • Object-oriented programmingSOLID principlesclean architectureclean codedesign patternsunit testing

实现MVC的Web应用示例:

这里是我选择的使用MVC的Web应用程序工作流方法的概述-主要是受罗伯特·马丁(Robert Martin)的演示文稿Keynote: Architecture the Lost Years的启发,并尝试尊重Trygve Reenskaug提出的原始MVC模式的工作流程1979年(例如,控制器更新了模型,视图从模型中提取数据,而与控制器无关)。

您可以在我的older answer中阅读有关每个组件的更多详细信息。

enter image description here

enter image description here

enter image description here

一些资源:

答案 1 :(得分:0)

如果我曾经遇到过这个问题,我建议提问者退后一步来思考他想解决的问题。

我会回答以下问题:objectMapper.readValue(obj, Employee.class)

MVC模式具有一些优点,但也有很多缺点。 在PHP演变过程中,几年前,我们向自己介绍了MVC框架的时代,那太好了!更快,更轻松的开发过程,很多魔术,活动记录等。

随着PHP社区的发展,我们现在正在学习有关过去错误的艰难方法。极高的耦合度,边缘案例继承,全局变量的使用以及违反每个SOLID规则的实现。 MVC被框架滥用,并且它们实现的方式从根本上是错误的! 中间件的概念将是MVC框架崩溃之后唯一保留的继承。

因此,除了可能引起的代码可重用性问题之外,为了构建(或更好地启动/建议)(MVC)框架,我认为您至少需要技术知识。您需要遵循PHP和PHP Framework的发展道路,并从过去的错误中学习,以便做出选择。

答案 2 :(得分:0)

我想这个问题的最简单答案就是准确地解释什么是php mvc框架,它的功能以及诸如谈论所有偶尔可以在框架中使用的classes之类的好处。没有它就无法工作:

  • 配置
  • URI
  • 输入
  • 输出
  • 语言
  • 加密
  • 等等。

简要描述它们每个的用法,并讨论数据库类:

  • 数据库配置
  • 连接
  • 查询生成器
  • 等等。

也许谈论loaderslibrarieshelpers