** 简化问题 **
我正在学习 oop 模式,并且希望构建自己的简单 mvc 框架。我希望它有一个前端 Controller ,但我发现很难找到任何可靠的信息来使用 MVC 实现前端 Controller 。
我特别困惑的是,前端 Controller 是否应该启动整个三元组,或者前端 Controller 是否只是简单地调用 Controller ,而其他部分则完成其余的工作。
我注意到像路由、路由器和 Bootstrap 这样的类,我想知道这些特定类的作用以及它们是否依赖于前端 Controller 本身。
最佳答案
实际上这不是一个问题,您只是想获得有关如何在构建您自己的 MVC 框架时继续进行的建议。 因此,我将尝试提供与您的问题一样通用的答案/考虑因素。
1) “我正在学习 OOP 模式”:模式在错误的人手中既强大又危险。我想说的是,你应该开始构建你的固件,而不是仅仅因为它被大公司使用或谈论,就试图使用你在网上遇到的每一种模式。您可以稍后重构代码,为每个步骤提供更高级别的抽象:这自然会涉及使用您将要阅读的模式并更好地理解它们。
2)“对前端 Controller 是否应该启动整个三元组感到困惑”:这取决于您想要在 mvc 中实现的耦合级别。 您可以让前端 Controller 处理以下所有事情:
- bootstrap:加载配置并实例化数据库连接等
- 请求:获取描述所询问内容的所需数据
- 路由:处理请求
- 响应:返回所询问的内容
但是如果其他地方需要配置怎么办?也许在 CLI 运行脚本中?您自然会从路由器上分离引导组件,以便在其他需要的地方使用它。其他组件也是如此。
3) “路由、路由器和 Bootstrap 等类”。 想象一下让你的大类(class)处理所有事情。您将如何测试您的方法?您会使用不同的输入手动调用脚本吗?每个测试方法都必须同时检查输入、路由和输出吗? 为前端 Controller 中涉及的每个组件提供抽象级别,将其封装在适当的类/对象/模块中,将为您提供更好的测试能力。
我这么说是因为在创建你所说的内容之前我已经沿着这条路走了:https://github.com/OverKiller/PHP-Router
但我不得不面对艰难的测试能力和深度耦合。 我很快就会重写它,抽象出请求、路由和响应组件。 但我有我的经验,我为此感到自豪!
你也应该这样做。 我想说的是:不要尝试一次性构建下一个 Ultimate SymZendCakeIgniter PHP 框架。 花点时间,花点时间阅读,花点时间学习。 看在上帝的份上:*即使在阅读有关设计模式的任何内容之前,也要先阅读一本关于T-E-S-T-I-N-G
的好书我希望我有用。
关于php - MVC 与前端 Controller 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868206/