## è·¯ç±åç»
è·¯ç±åç»åè½å
许æç¸ååç¼çè·¯ç±å®ä¹å并åç»ï¼è¿æ ·å¯ä»¥ç®åè·¯ç±å®ä¹ï¼å¹¶ä¸æé«è·¯ç±å¹é
çæçï¼ä¸å¿
æ¯æ¬¡é½å»éåå®æ´çè·¯ç±è§åï¼å°¤å
¶æ¯å¼å¯äºè·¯ç±å»¶è¿è§£æåæ§è½æ´ä½³ï¼ã
使ç¨`Route`ç±»ç`group`æ¹æ³è¿è¡æ³¨åï¼ç»åç»è·¯ç±å®ä¹ä¸äºå
¬ç¨çè·¯ç±è®¾ç½®åæ°ï¼ä¾å¦ï¼
~~~
Route::group('blog', function () {
Route::rule(':id', 'blog/read');
Route::rule(':name', 'blog/read');
})->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);
~~~
åç»è·¯ç±æ¯æææçè·¯ç±åæ°è®¾ç½®ï¼å
·ä½åæ°çç¨æ³è¯·åèè·¯ç±åæ°ç« èå
容ã
å¦æä»
ä»
æ¯ç¨äºå¯¹ä¸äºè·¯ç±è§å设置ä¸äºå
Œ
±çè·¯ç±åæ°ï¼ä¹ç§°ä¹ä¸ºèæåç»ï¼ï¼ä¹å¯ä»¥ä½¿ç¨ï¼
~~~
Route::group(function () {
Route::rule('blog/:id', 'blog/read');
Route::rule('blog/:name', 'blog/read');
})->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);
~~~
è·¯ç±åç»æ¯æåµå¥ï¼ä¾å¦ï¼
~~~
Route::group(function () {
Route::group('blog', function () {
Route::rule(':id', 'blog/read');
Route::rule(':name', 'blog/read');
});
})->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);
~~~
>[danger] å¦æ使ç¨äºåµå¥åç»çæ
åµï¼ååç»ä¼ç»§æ¿ç¶åç»çåæ°ååéè§åï¼èæç»çè·¯ç±è§åéé¢å®ä¹çåæ°ååéè§å为æä¼å
ã
å¯ä»¥ä½¿ç¨`prefix`æ¹æ³ç®åç¸åè·¯ç±å°åçå®ä¹ï¼ä¾å¦ä¸é¢çå®ä¹
~~~
Route::group('blog', function () {
Route::get(':id', 'blog/read');
Route::post(':id', 'blog/update');
Route::delete(':id', 'blog/delete');
})->ext('html')->pattern(['id' => '\d+']);
~~~
å¯ä»¥ç®å为
~~~
Route::group('blog', function () {
Route::get(':id', 'read');
Route::post(':id', 'update');
Route::delete(':id', 'delete');
})->prefix('blog/')->ext('html')->pattern(['id' => '\d+']);
~~~
## è·¯ç±å®å
¨å¹é
å¦æå¸ææ个åç»ä¸é¢çè·¯ç±é½éç¨å®å
¨å¹é
ï¼å¯ä»¥ä½¿ç¨
~~~
Route::group('blog', function () {
Route::get(':id', 'read');
Route::post(':id', 'update');
Route::delete(':id', 'delete');
})->completeMatch()->prefix('blog/')->ext('html')->pattern(['id' => '\d+']);
~~~
## 延è¿è·¯ç±è§£æ
æ¯æ延è¿è·¯ç±è§£æï¼ä¹å°±æ¯è¯´ä½ å®ä¹çè·¯ç±è§åï¼ä¸»è¦æ¯åç»è·¯ç±åååè·¯ç±è§åï¼å¨å 载路ç±å®ä¹æ件çæ¶å并没æå®é
注åï¼èæ¯å¨å¹é
å°è·¯ç±åç»æè
ååçæ
åµä¸ï¼æä¼å®é
è¿è¡æ³¨åå解æï¼å¤§å¤§æé«äºè·¯ç±æ³¨åå解æçæ§è½ã
é»è®¤æ¯å
³é延è¿è·¯ç±è§£æçï¼ä½ å¯ä»¥å¨è·¯ç±é
ç½®æ件ä¸è®¾ç½®ï¼
~~~
// å¼å¯è·¯ç±å»¶è¿è§£æ
'url_lazy_route' => true,
~~~
å¼å¯å»¶è¿è·¯ç±è§£æåï¼å¦æä½ éè¦çæè·¯ç±å解URLï¼éè¦ä½¿ç¨å½ä»¤è¡æ令
~~~
php think optimize:route
~~~
æ¥çæè·¯ç±ç¼å解æã
>[danger] éè¿è·¯ç±åç»æè
ååè·¯ç±æ¥å®ä¹è·¯ç±æè½åæ¥å»¶è¿è§£æçä¼å¿ã
ä¸æ¦å¼å¯è·¯ç±ç延è¿è§£æï¼å°ä¼å¯¹å®ä¹çååè·¯ç±ååç»è·¯ç±è¿è¡å»¶è¿è§£æï¼ä¹å°±æ¯è¯´åªæå®é
å¹é
å°è¯¥ååæè
åç»åæä¼è¿è¡è·¯ç±è§åç注åï¼é¿å
ä¸å¿
è¦ç注åå解æå¼éã
## è·¯ç±è§åå并解æ
åä¸ä¸ªè·¯ç±åç»ä¸çè·¯ç±è§åæ¯æå并解æï¼èä¸éè¦éå该路ç±åç»ä¸çææè·¯ç±è§åï¼å¯ä»¥å¤§å¤§æåè·¯ç±è§£æçæ§è½ã
对æ个åç»åç¬å¼å¯å并è§å解æçç¨æ³å¦ä¸ï¼
~~~php
Route::group('user', function () {
Route::rule('hello/:name','hello');
Route::rule('think/:name','think');
})->mergeRuleRegex();
~~~
è¿æ ·è¯¥åç»ä¸çææè·¯ç±è§åæ 论å®ä¹å¤å°ä¸ªé½åªéè¦å¹é
æ£æ¥ä¸æ¬¡å³å¯ï¼å®é
ä¸åªä¼å并æ£æ¥ç¬¦åå½å请æ±ç±»åçè·¯ç±è§åï¼ã
>[danger] `mergeRuleRegex`æ¹æ³åªè½ç¨äºè·¯ç±åç»æè
ååè·¯ç±ï¼ååè·¯ç±å
¶å®æ¯ä¸ä¸ªç¹æ®çåç»ï¼ã
æè
å¨è·¯ç±é
ç½®æ件ä¸è®¾ç½®å¼å¯å
¨å±å并è§åï¼å¯¹ææåç»ææï¼
~~~
// å¼å¯è·¯ç±å并解æ
'route_rule_merge' => true,
~~~
## ä¼ å
¥é¢å¤åæ°
å¯ä»¥ç»ä¸ç»åç»è·¯ç±ä¼ å
¥é¢å¤çåæ°
~~~
Route::group('blog', [
':id' => 'Blog/read',
':name' => 'Blog/read',
])->ext('html')
->pattern(['id' => '\d+'])
->append(['group_id' => 1]);
~~~
ä¸é¢çåç»è·¯ç±ç»ä¸ä¼ å
¥äº`group_id`åæ°ï¼è¯¥åæ°çå¼å¯ä»¥éè¿`Request`ç±»ç`param`æ¹æ³è·åã
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- 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
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿