Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

11.8. Dispatcher MVC核心分发器

11.8.1. URL设计

一个大型网站,对于URL规划我认为非常重要,这也是为什么我把它单列出来的原因。

当前网站上使用的URL虚虚实实已经不单单是划分目录空间功能,它与程序配合使用,实现复杂的逻辑功能。在应用程序开发框架组成中占有重要的地位。

[注意]注意

无论什么文件系统,每个目录下容纳的子目录和文件是有限制的,并且内容过多会影响文件索引速度,所以合理地划分目录空间很重要

下面是URL实例仅供参考,稍后我会详细解释他们这样设计的目的是什么和实现方法。

  • http://sina.allyes.com/main/adfclick?db=sina&bid=120294,154641,159584&cid=0,0,0&sid=146767&advid=2618&camid=19961&show=ignore&url=http://web.topxue.com/gj/bdxm/

  • http://news.sina.com.cn/c/2008-05-22/172315597145.shtml

  • http://example.org/bbs/thread-1003872-1-1.html

  • http://example.org/news/2008/05/22/1004862.shtml

  • http://example.org/uk/en/action,ProductDetailShow_productId,51

  • http://example.com/forums/viewforum/59/

  • http://example.com/forums/viewthread/80165/

  • http://trac.example.com/cgi-bin/trac.cgi/ticket/1286

目录设计,以下为真实目录,你在URL看到其它路径都是不存在的。它们是用于rewrite或pathinfo的。

  • images

  • framework

  • model

  • view

  • controller

  • language

  • config

  • logs

11.8.1.1. URL 作为MVC 的Controller

例子1

http://example.com/guestbook/view/59/

相当于

http://example.com/<controller>/<action>/<id>/

class Guestbook extend Controller{
	public function index(){
	}
	public function view($id =1){
	}
	public function add(){}
	public function remove($id){
	}
}
			

一般采用pathinfo技术实现上述功能

11.8.1.2. URL 伪静态化,用于SEO优化

http://example.com/guestbook/view/59.html

相当于

http://example.com/guestbook.php?action=view&id=59

一般使用Rewrite技术实现

11.8.2. Dispatcher 的实现方式

		
$action  = $_REQUEST['action'];
$libname = $_REQUEST['lib'];
$special = new Advertize ($libname,$action);
if(method_exists($special, $action)) {
    $special->$action();
}else{
    $special->index();
}