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