Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

32.5. Dispatcher MVC核心分發器

32.5.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

32.5.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技術實現上述功能

32.5.1.2. URL 偽靜態化,用於SEO優化

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

相當於

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

一般使用Rewrite技術實現

32.5.2. Dispatcher 的實現方式

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