| 閉包定義我們可以使用閉包的方式定義一些特殊需求的路由,而不需要執(zhí)行控制器的操作方法了 參數(shù)傳遞閉包定義的參數(shù)傳遞在規(guī)則路由和正則路由的兩種情況下有所區(qū)別。 規(guī)則路由規(guī)則路由的參數(shù)傳遞比較簡(jiǎn)單: 'hello/:name' =>     function($name){         echo 'Hello,'.$name;    }規(guī)則路由中定義的動(dòng)態(tài)變量的名稱 就是閉包函數(shù)中的參數(shù)名稱,不分次序。 因此,如果我們?cè)L問(wèn)的URL地址是:  則瀏覽器輸出的結(jié)果是:  正則路由如果是正則路由的話,閉包函數(shù)中的參數(shù)就以正則中出現(xiàn)的參數(shù)次序來(lái)傳遞,例如: '/^new\/(\d{4})\/(\d{2})$/' =>     function($year,$month){         echo 'year='.$year.'&month='.$month;    }如果我們?cè)L問(wèn):  繼續(xù)執(zhí)行默認(rèn)的情況下,使用閉包定義路由的話,一旦匹配到路由規(guī)則,執(zhí)行完閉包方法之后,就會(huì)中止后續(xù)執(zhí)行。如果希望閉包函數(shù)執(zhí)行后,后續(xù)的程序繼續(xù)執(zhí)行,可以在閉包函數(shù)中使用布爾類型的返回值,例如: 'hello/:name' =>     function($name){         echo 'Hello,'.$name.'<br/>';        $_SERVER['PATH_INFO'] = 'blog/read/name/'.$name;        return false;    }該路由定義中的閉包函數(shù)首先執(zhí)行了一段輸出代碼,然后重新設(shè)置了 假設(shè)blog控制器中的read操作方法代碼如下: public function read($name){    echo 'read,'.$name.'!<br/>';}如果我們?cè)L問(wèn)的URL地址是:  則瀏覽器輸出的結(jié)果是: Hello,thinkphpread,thinkphp! ================================ | 
|  | 
來(lái)自: 醉人說(shuō)夢(mèng) > 《路由》