0

我想知道在任何基于Web的框架中是否有任何控制器数量的指导原则。我知道这取决于要求。但是,如果你想考虑一个包含注册,登录,用户认证,发送电子邮件,用户配置文件编辑等等的基本应用程序,你是否会决定控制器?一般在框架中制作多少个控制器?

如果有很多常见的功能,你会让不同的控制器来保持它们全部? Zend等一些框架建议为其创建帮助文件!你是否为不同的功能创建了助手文件的类别?

+0

你的意思是在URL命名的引导文件,如“myapp.php”(或通过htaccess的,如果你正在做的路由)或实际的业务逻辑的实现?对于前者,你可以避开一个(或每个环境一个,按照symfony),但对于后者,它可以随你需要。 – halfer 2013-03-04 16:07:12

回答

1

望着路由,我们有一些不大不小的准则,以我们有多少控制器,甚至是行动在Zend框架。尽管我们必须记住,我们可以通过一种方式(更少)或其他方式(更多)来做很多事情来改变它。

在ZF的基本和一般的规则进行路由是有一个链接路径与控制器和动作匹配起来。

www.yourdomain.com/controller/action 

路由将分派给相应的控制器,并与它分配给指定的操作。当我们遵循这个基本规则时,我们最终会得到一些符合我们希望看到的路径数量的控制器。

你基本上可以创建一个根路径的每一项功能为你的网站,并最终获得尽可能多的控制器(带一个动作),甚至一个路径中组合的一切,因此一个控制器,但许多行动。

最终,您将会并应该将您网站的常用功能合并到一个路径和控制器中,例如,将与用户管理(注册,配置文件编辑)相关的所有内容组合到/user路径和UserController中。

至于你的例子,我认为用户认证的东西,不会有自己的控制器,但发生由控制器使用的登录控制器或模型内。

UPDATE

控制器和他们的行动诠释请求,只能委托给其他方法。将这些方法保留在自己的类中可能会有所帮助。你如何构建这些方法和类取决于你。 Zend的方法是将它们保存在您自己的应用程序库中,例如发送电子邮件应该由您自己的应用程序库中的一个单独的类来执行并执行(在Zend类旁边并可能扩展)。

如果你有一个联系人页面,你可以有一个的ContactController一个/contact链接。 indexAction将委托所有内容来呈现表单页面。该表单可能有一个/contact/submit提交按钮的链接,相应的submitAction将挂钩您的电子邮件库类并发送电子邮件。 submitAction最终可能会调用类似_redirect('/submit/thankyou')或甚至/submit/error。正如您现在可能猜到的那样,将会有一个thankyouAction负责提供一个Thank you页面或一个errorAction,让用户知道有错误。

+0

感谢您的回复。电子邮件功能如何?如果我有很多电子邮件要发送给用户 - 比如欢迎电子邮件,电子邮件验证邮件,与应用程序相关的电子邮件等,那么您如何坚持OOP为控制器。大多数情况下,我最终只需要一个单独的操作就可以编写多行代码。 – VishwaKumar 2013-03-05 06:32:46

+0

@VishwaKumar查看更新 – 2013-03-05 15:51:14

相关问题