Joe*_*Joe 11 php model-view-controller controller codeigniter
我已经苦苦挣扎了一段时间,正是如何使用MVC框架重新编码基于页面的PHP应用程序.仅仅是为了背景,我不得不将应用程序转移到MVC,因为我的老板正在制作我.无论如何,我坐下来打印出目录结构.然后我开始尝试计划如何将这些页面转换为控制器/动作对.有些事情似乎很直接.例如,我有几页专门用于添加/编辑/删除用户.这很容易创建一个"用户"控制器,并添加添加/编辑/删除的方法或操作.我遇到问题的地方在于决定何时实际创建一个控制器,而不是只做一个动作,因为它并不总是那么明确.例如,登录控制器与用户/登录,或寄存器控制器与用户/寄存器.对我来说,
另一个例子是,我有大约12个用于创建"计划"的表单页面.在我脑海中,我认为我需要创建一个"计划"控制器,然后每个旧的页面将成为一个动作.所以我有一个控制器有12个动作(方法).对我来说问题是,虽然这些页面中的所有12页都是数据输入表格,但最终构成了这个"计划",这是他们共同拥有的.每个页面在数据库中使用不同的表,并且彼此之间没有任何其他共同点.基本上通过创建一个"计划"控制器,我只是真的使用它作为分组机制; 不一定使用它,因为它们有相互关联的东西.至少在上面的"用户"控制器示例中; 这些行动中的每一个都使用相同的"
我想它只是归结为让我自己使用控制器作为层次结构实体而不是对象/动作.看起来很容易使用控制器以错误的方式陷入陷阱.有谁知道我在说什么?希望它不会太混乱.
编辑:如果我尝试坚持每个视图一个控制器; 然后,我会将每个请求的代码保持在最低限度.这是最好的方法吗?
编辑:从每个人的意见来看,似乎每个视图的一个控制器不符合我的最佳利益.我仍然有一些担忧,因为看起来控制器可能会匆忙变胖,但这是另一个讨论.我还有一些问题,何时决定使用控制器而不是动作.一个很好的例子是堆栈溢出本身.在页面顶部,您有一个"问题"选项,我们可以假设将您带到"问题"控制器.我这样说是因为在右侧您可以选择"提出问题",URL指向"问题/提问".这是有道理的,你使用问题控制器的ask方法.令我困惑的是,您在菜单上有"未答复"选项.它看起来像是一个控制器.为什么它不仅仅是问题控制下的行动,如"问题/未答复"?这就是我变得浑浊的地方.
在采取这样的行动时,您不仅要改变特定站点的实现,还要改变人们对其的感知方式。无论如何,您都必须进行大量的重新编码,但您的优势在于理解概念并拥有如何做到这一点的经验。
我的建议是坐下来,假装您对如何实施该网站一无所知,但知道与您正在处理的网站类型相关的所有问题 - 它的要求和陷阱。创建一个基于 MVC 的网站概念化,然后尝试重用尽可能多的代码。代码重用可能最终并不可行,但从好的方面来看,至少您之前已经解决了许多相同的问题,因此实施起来应该不会花费那么长时间。
不要忘记,您始终可以使用路由来维护合理的 URL 结构,例如使用不同控制器的一系列表单页面,从而允许您使用不同的控制器、操作和视图,同时仍然能够借用相同的布局或视图。模板。
| 归档时间: |
|
| 查看次数: |
5195 次 |
| 最近记录: |