3.7. 路由映射

什么是路由映射?

路由映射 就是你的网络访问 URL 怎么和你的 PHP 代码对应起来的。比如你访问 http://www.bangzhufu.com/Goods/View/goods_id-42367.html ,这个网址是怎么和PHP代码 Theme/Shop/shop/Code/Controller/Goods/View.php 对应起来的,这种对应规则就叫做 路由映射。

下面我们把 URL 和 程序路径做一个分解你就能看出它们是怎么对应的了。

HTTP请求: GET www.bangzhufu.com/Goods/View/goods_id-42367.html

PHP 程序: Theme/Shop/shop/Code/Controller/Goods/View.php

从上面我们可以看到,URL 去除掉固定前缀(www.bangzhufu.com),PHP 程序也去掉固定前缀(Theme/Shop/shop/Code/Controller),我们得到相同的 /Goods/View 这个就是 Controller,而后面的 goods_id-42367 其实就是 Controller 的参数。由于 PHP 是 GET 请求,所以对应 View.php 中的 public function get(){ … } 方法(同理,POST 的话对应的就是 post 方法)。

下面看一个更加复杂的例子:

HTTP请求: GET www.bangzhufu.com1/Goods/Category2/category_id-5116~orderBy-shop_price~orderDir-asc~shop_price_max-200~shop_price_min-1003.html

  1. 固定的前缀
  2. Controller 对应 Goods/Category.php,GET 请求所以对应 PHP 文件中的 get() 方法
  3. 参数列表,我想你能看明白参数是怎么分割的 ^_^

这种对应方式是写死的吗?

当然不是了,如果你查看一下 Theme/Shop/shop/route.cfg 文件,你就明白了,这里面配置的就是路由规则。

路由规则的配置. 

[routes]
GET|POST /@controller/@action/@method=Controller\@controller\@action->@method
HEAD /@controller/@action/@method=Controller\@controller\@action->head

[maps]
/=Controller\Shop\Index
/@controller/@action=Controller\@controller\@action

具体规则的语法我们就不解释了,这是 F3 框架定义的语法,有兴趣的人自己查看 F3 框架的文档吧。

读完 路由映射 之后你再看到一个页面就应该知道它对应的 PHP程序 在哪里了,以后就可以有针对性的去看相应的代码了。