友好的代码从页面控制器转换到前端控制器

时间:2009-06-28 16:26:04

标签: php model-view-controller oop front-controller

我正处于自己创建中小型Web应用程序的早期阶段。我读了“PHP对象,模式和实践”,我决定使用页面控制器,因为快速生产是一个高优先级。页面控制器也很吸引人,因为我不熟悉PHP框架,而且创建一个精心设计的前端控制器目前似乎超过了项目。我的计划是尽快发布网站的页面控制器版本,并在提交更复杂的软件设计之前查看受众是否喜欢它。

也就是说,我可能决定在未来添加更多“模块”和开发人员......此时我真的应该切换到前端控制器。上面提到的书描述了“从页面控制器开始并向前端控制器模式开始并非不可能”,但“不可能”的措辞使我担心这可能相当困难。

我的问题是: 从页面控制器到前端控制器设计的过渡有多难?在使用基于页面控制器的应用程序时,我应该小心创建允许平滑过渡到前端控制器设计的代码?理想的情况是尽可能少地重写/重构代码,并在前端控制器上使用相关的类/对象。现在我只对维护MVC持谨慎态度,所以经验丰富的开发人员的任何建议都会很棒。谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您的主要关注点应该是将“业务逻辑”放入正确设计的模型类中。换句话说,不要直接在页面控制器中放置这样的逻辑。相反,使用页面控制器来解析输入,例如GET和POST,实例化正确的业务逻辑对象,并在那些上调用正确的方法来进行实际的数据处理。

页面控制器还应负责选择要显示的视图 - 不要在业务对象中输出内容,只需返回控制器的数据。

通过使用这种方法,您应该在模型类中拥有大部分代码,并且如果/当您想要重写为使用前端控制器时,您只需要更改页面控制器以使用前端控制器,希望不必修改任何其他内容。

答案 1 :(得分:1)

我读了大约3或4年前你提到的这本书,作为面向对象编程的第一篇介绍,我发现它是一本很棒的书,但我不得不说,一旦我开始,我真的只能掌握整个事情。在其代码中使用CakePHP和root来查看在实践中如何完成任务。书中的例子有时会让人感到困惑。

我建议再看一下那里的一些框架,Cake很好,Yii意味着更好。使用它们设置系统并不长,只要你准备好好好看看它们,它们就是一个非常宝贵的学习工具。