è¦ä½¿ç¨`Route`类注åè·¯ç±å¿
é¡»é¦å
å¨è·¯ç±å®ä¹æ件å¼å¤´æ·»å å¼ç¨ï¼åé¢ä¸åéå¤è¯´æï¼
```
use think\facade\Route;
```
## 注åè·¯ç±
æåºç¡çè·¯ç±å®ä¹æ¹æ³æ¯ï¼
>[info] Route::rule('è·¯ç±è¡¨è¾¾å¼', 'è·¯ç±å°å', '请æ±ç±»å');
ä¾å¦æ³¨åå¦ä¸è·¯ç±è§åï¼å设为ååºç¨æ¨¡å¼ï¼ï¼
~~~
// 注åè·¯ç±å°Newsæ§å¶å¨çreadæä½
Route::rule('new/:id','News/read');
~~~
æ们访é®ï¼
~~~
http://serverName/new/5
~~~
ä¼èªå¨è·¯ç±å°ï¼
~~~
http://serverName/news/read/id/5
~~~
并ä¸åæ¥ç访é®å°åä¼èªå¨å¤±æã
å¯ä»¥å¨`rule`æ¹æ³ä¸æå®è¯·æ±ç±»åï¼ä¸æå®çè¯é»è®¤ä¸ºä»»ä½è¯·æ±ç±»åææï¼ï¼ä¾å¦ï¼
~~~
Route::rule('new/:id', 'News/update', 'POST');
~~~
>[danger] 请æ±ç±»ååæ°ä¸åºå大å°åã
表示å®ä¹çè·¯ç±è§åå¨`POST`请æ±ä¸æææãå¦æè¦å®ä¹`GET`å`POST`请æ±æ¯æçè·¯ç±è§åï¼å¯ä»¥ç¨ï¼
~~~
Route::rule('new/:id','News/read','GET|POST');
~~~
ä¸è¿é常æ们æ´æ¨è使ç¨å¯¹åºè¯·æ±ç±»åçå¿«æ·æ¹æ³ï¼å
æ¬ï¼
| ç±»å | æè¿° | å¿«æ·æ¹æ³ |
| --- | --- | --- |
| GET | GETè¯·æ± | get |
| POST | POSTè¯·æ± | post |
| PUT | PUTè¯·æ± | put |
| DELETE | DELETEè¯·æ± | delete |
| PATCH | PATCHè¯·æ± | patch |
| \* | ä»»ä½è¯·æ±ç±»å | any |
å¿«æ·æ³¨åæ¹æ³çç¨æ³ä¸ºï¼
>[info] Route::å¿«æ·æ¹æ³å('è·¯ç±è¡¨è¾¾å¼', 'è·¯ç±å°å');
使ç¨ç¤ºä¾å¦ä¸ï¼
~~~
Route::get('new/<id>','News/read'); // å®ä¹GET请æ±è·¯ç±è§å
Route::post('new/<id>','News/update'); // å®ä¹POST请æ±è·¯ç±è§å
Route::put('new/:id','News/update'); // å®ä¹PUT请æ±è·¯ç±è§å
Route::delete('new/:id','News/delete'); // å®ä¹DELETE请æ±è·¯ç±è§å
Route::any('new/:id','News/read'); // ææ请æ±é½æ¯æçè·¯ç±è§å
~~~
注åå¤ä¸ªè·¯ç±è§ååï¼ç³»ç»ä¼ä¾æ¬¡éå注åè¿ç满足请æ±ç±»åçè·¯ç±è§åï¼ä¸æ¦å¹é
å°æ£ç¡®çè·¯ç±è§åååå¼å§æ§è¡æç»çè°åº¦æ¹æ³ï¼åç»è§åå°±ä¸åæ£æµã
## è§å表达å¼
è§å表达å¼é常å
å«éæè§ååå¨æè§åï¼ä»¥å两ç§è§åçç»åï¼ä¾å¦ä¸é¢é½å±äºææçè§å表达å¼ï¼
~~~
Route::rule('/', 'index'); // é¦é¡µè®¿é®è·¯ç±
Route::rule('my', 'Member/myinfo'); // éæå°åè·¯ç±
Route::rule('blog/:id', 'Blog/read'); // éæå°ååå¨æå°åç»å
Route::rule('new/:year/:month/:day', 'News/read'); // éæå°ååå¨æå°åç»å
Route::rule(':user/:blog_id', 'Blog/read'); // å
¨å¨æå°å
~~~
>[danger] è§å表达å¼çå®ä¹ä»¥`/`为åæ°åå²ç¬¦ï¼æ è®ºä½ ç`PATH_INFO`åé符设置æ¯ä»ä¹ï¼è¯·ç¡®ä¿å¨å®ä¹è·¯ç±è§å表达å¼çæ¶åç»ä¸ä½¿ç¨`/`è¿è¡URLåæ°åå²ï¼é¤éæ¯ä½¿ç¨ç»ååéçæ
åµï¼ã
æ¯ä¸ªåæ°ä¸å¯ä»¥å
æ¬å¨æåéï¼ä¾å¦`:åé`æè
`<åé>`é½è¡¨ç¤ºå¨æåéï¼æ°çæ¨è使ç¨ç¬¬äºç§æ¹å¼ï¼æ´å©äºæ··ååéå®ä¹ï¼ï¼å¹¶ä¸ä¼èªå¨ç»å®å°æä½æ¹æ³ç对åºåæ°ã
>[info] ä½ çURL访é®`PATH_INFO`åé符使ç¨`pathinfo_depr`é
ç½®ï¼ä½æ 论å¦ä½é
ç½®ï¼é½ä¸å½±åè·¯ç±çè§å表达å¼çè·¯ç±åé符å®ä¹ã
## å¯éåé
æ¯æ对路ç±åæ°çå¯éå®ä¹ï¼ä¾å¦ï¼
~~~
Route::get('blog/:year/[:month]','Blog/archive');
// æè
Route::get('blog/<year>/<month?>','Blog/archive');
~~~
åéç¨`[ ]`å
å«èµ·æ¥å就表示该åéæ¯è·¯ç±å¹é
çå¯éåéã
以ä¸å®ä¹è·¯ç±è§ååï¼ä¸é¢çURL访é®å°åé½å¯ä»¥è¢«æ£ç¡®çè·¯ç±å¹é
ï¼
~~~
http://serverName/index.php/blog/2015
http://serverName/index.php/blog/2015/12
~~~
éç¨å¯éåéå®ä¹åï¼ä¹åéè¦å®ä¹ä¸¤ä¸ªæè
å¤ä¸ªè·¯ç±è§åæè½å¤ççæ
åµå¯ä»¥å并为ä¸ä¸ªè·¯ç±è§åã
>[danger] å¯éåæ°åªè½æ¾å°è·¯ç±è§åçæåï¼å¦æå¨ä¸é´ä½¿ç¨äºå¯éåæ°çè¯ï¼åé¢çåéé½ä¼åæå¯éåæ°ã
## å®å
¨å¹é
è§åå¹é
æ£æµçæ¶åé»è®¤åªæ¯å¯¹URLä»å¤´å¼å§å¹é
ï¼åªè¦URLå°åå¼å¤´å
å«äºå®ä¹çè·¯ç±è§åå°±ä¼å¹é
æåï¼å¦æå¸æURLè¿è¡å®å
¨å¹é
ï¼å¯ä»¥å¨è·¯ç±è¡¨è¾¾å¼æå使ç¨`$`符å·ï¼ä¾å¦ï¼
~~~
Route::get('new/:cate$', 'News/category');
~~~
è¿æ ·å®ä¹å
~~~
http://serverName/index.php/new/info
~~~
ä¼å¹é
æå,è
~~~
http://serverName/index.php/new/info/2
~~~
åä¸ä¼å¹é
æåã
å¦ææ¯éç¨
~~~
Route::get('new/:cate', 'News/category');
~~~
æ¹å¼å®ä¹çè¯ï¼å两ç§æ¹å¼çURL访é®é½å¯ä»¥å¹é
æåã
å¦æéè¦å
¨å±è¿è¡URLå®å
¨å¹é
ï¼å¯ä»¥å¨è·¯ç±é
ç½®æ件ä¸è®¾ç½®
~~~
// å¼å¯è·¯ç±å®å
¨å¹é
'route_complete_match' => true,
~~~
å¼å¯å
¨å±å®å
¨å¹é
åï¼å¦æéè¦å¯¹æ个路ç±å
³éå®å
¨å¹é
ï¼å¯ä»¥ä½¿ç¨
~~~
Route::get('new/:cate', 'News/category')->completeMatch(false);
~~~
## é¢å¤åæ°
å¨è·¯ç±è·³è½¬çæ¶åæ¯æé¢å¤ä¼ å
¥åæ°å¯¹ï¼é¢å¤åæ°æçæ¯ä¸å¨URLéé¢çåæ°ï¼éå¼ä¼ å
¥éè¦çæä½ä¸ï¼ææ¶åè½å¤èµ·å°ä¸å®çå®å
¨é²æ¤ä½ç¨ï¼åé¢æ们ä¼æå°ï¼ãä¾å¦ï¼
~~~
Route::get('blog/:id','blog/read')
->append(['status' => 1, 'app_id' =>5]);
~~~
ä¸é¢çè·¯ç±è§åå®ä¹ä¸`status`å`app_id`åæ°é½æ¯URLéé¢ä¸åå¨çï¼å±äºéå¼ä¼ å¼ãå¯ä»¥é对ä¸åçè·¯ç±è®¾ç½®ä¸åçé¢å¤åæ°ã
>[danger] å¦æ`append`æ¹æ³ä¸çåéåè·¯ç±è§ååå¨å²çªçè¯ï¼appendæ¹æ³ä¼ å
¥çä¼å
ã
## è·¯ç±æ è¯
å¦æä½ éè¦å¿«éçæ ¹æ®è·¯ç±çæURLå°åï¼å¯ä»¥å¨å®ä¹è·¯ç±çæ¶åæå®çææ è¯ï¼ä½è¦ç¡®ä¿å¯ä¸ï¼ã
ä¾å¦
~~~
// 注åè·¯ç±å°Newsæ§å¶å¨çreadæä½
Route::rule('new/:id','News/read')
->name('new_read');
~~~
çæè·¯ç±å°åçæ¶åå°±å¯ä»¥ä½¿ç¨
~~~
url('new_read', ['id' => 10]);
~~~
å¦æä¸å®ä¹è·¯ç±æ è¯çè¯ï¼ç³»ç»ä¼é»è®¤ä½¿ç¨è·¯ç±å°åä½ä¸ºè·¯ç±æ è¯ï¼ä¾å¦å¯ä»¥ä½¿ç¨ä¸é¢çæ¹å¼çæ
~~~
url('News/read', ['id' => 10]);
~~~
## 强å¶è·¯ç±
å¨è·¯ç±é
ç½®æ件ä¸è®¾ç½®
~~~
'url_route_must' => true,
~~~
å°å¼å¯å¼ºå¶ä½¿ç¨è·¯ç±ï¼è¿ç§æ¹å¼ä¸é¢å¿
é¡»ä¸¥æ ¼ç»æ¯ä¸ä¸ªè®¿é®å°åå®ä¹è·¯ç±è§åï¼**å
æ¬é¦é¡µ**ï¼ï¼å¦åå°æåºå¼å¸¸ã
é¦é¡µçè·¯ç±è§åéç¨`/`å®ä¹å³å¯ï¼ä¾å¦ä¸é¢æç½ç«é¦é¡µè·¯ç±è¾åº`Hello,world!`
~~~php
Route::get('/', function () {
return 'Hello,world!';
});
~~~
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿