我看到许多网站的MVC实现有一个单一入口点,如index.php文件,然后解析URL以确定要运行哪个控制器。这对我来说似乎很奇怪,因为它涉及到必须使用Apache重写来重写URL,并且有足够的页面使单个文件变得臃肿。为什么应该为网站MVC需要单点输入?
为什么不相反只是让单个页面成为控制器?我的意思是,如果您的网站上有一个列出所有注册会员的页面,那么页面导航的members.php
将成为会员的控制器。这个php文件将查询成员模型中的数据库成员列表,并将其传递给成员视图。
我可能会错过一些东西,因为我最近才发现MVC,但这个问题一直在困扰着我。这种设计不是最好的,因为它没有一个臃肿的入口文件,所有的页面都不直观地调用模型,并且包含,封装并从各自的页面调用特定页面的视图?
你是什么意思*臃肿*?可能做错了什么...... – 2011-04-08 14:26:26
它背后的理念是你有例如100条有100个唯一永久链接的文章,所有这些都是通过单一控制器动作显示的,只有一条路径。从根本上说,你可能拥有尽可能多的路线(通常与控制器操作一样多),并且我没有看到任何缺点。那么你将只有一个.htaccess路由通向index.php,然后你应用你的路由配置和检查。如果我只是一味地解释这个问题,不是很确定,但是经过一番努力之后,你就会明白这些利益主体。 – 2011-04-08 14:30:07
您可以使用除重写纸之外的其他方式实现虚拟资源。特别是你可以使用php脚本sans文件扩展名,并使用PATH_INFO,因为它在前端控制器之前完成。这种方法与MVP btw更隐约相关。 – mario 2011-04-08 14:31:30