## å¤åºç¨
å®è£
åé»è®¤ä½¿ç¨**ååºç¨æ¨¡å¼é¨ç½²**ï¼ç®å½ç»æå¦ä¸ï¼
~~~
ââapp åºç¨ç®å½
â ââcontroller æ§å¶å¨ç®å½
â ââmodel 模åç®å½
â ââview è§å¾ç®å½
â ââ ... æ´å¤ç±»åºç®å½
â
ââpublic WEBç®å½ï¼å¯¹å¤è®¿é®ç®å½ï¼
â ââindex.php å
¥å£æ件
â âârouter.php å¿«éæµè¯æ件
â ââ.htaccess ç¨äºapacheçéå
â
ââview è§å¾ç®å½
ââconfig åºç¨é
ç½®ç®å½
ââroute è·¯ç±å®ä¹ç®å½
ââruntime åºç¨çè¿è¡æ¶ç®å½
~~~
> ååºç¨æ¨¡å¼çä¼å¿æ¯ç®åçµæ´»ï¼URLå°åå®å
¨éè¿è·¯ç±å¯æ§ãé
åè·¯ç±åç»åè½å¯ä»¥å®ç°ç±»ä¼¼å¤åºç¨ççµæ´»æºå¶ã
>[danger] å¦æè¦ä½¿ç¨å¤åºç¨æ¨¡å¼ï¼ä½ éè¦å®è£
å¤åºç¨æ¨¡å¼æ©å±`think-multi-app`ã
```
composer require topthink/think-multi-app
```
ç¶åä½ çåºç¨ç®å½ç»æéè¦åå¦ä¸è°æ´ï¼ä¸»è¦åºå«å¨`app`ç®å½å¢å äºåºç¨åç®å½ï¼ç¶åé
ç½®æ件åè·¯ç±å®ä¹æ件é½çº³å
¥åºç¨ç®å½ä¸ã
~~~
ââapp åºç¨ç®å½
â ââindex 主åºç¨
â â ââcontroller æ§å¶å¨ç®å½
â â ââmodel 模åç®å½
â â ââview è§å¾ç®å½
â â ââconfig é
ç½®ç®å½
â â ââroute è·¯ç±ç®å½
â â ââ ... æ´å¤ç±»åºç®å½
â â
â ââadmin åå°åºç¨
â â ââcontroller æ§å¶å¨ç®å½
â â ââmodel 模åç®å½
â â ââview è§å¾ç®å½
â â ââconfig é
ç½®ç®å½
â â ââroute è·¯ç±ç®å½
â â ââ ... æ´å¤ç±»åºç®å½
â
ââpublic WEBç®å½ï¼å¯¹å¤è®¿é®ç®å½ï¼
â ââadmin.php åå°å
¥å£æ件
â ââindex.php å
¥å£æ件
â âârouter.php å¿«éæµè¯æ件
â ââ.htaccess ç¨äºapacheçéå
â
ââconfig å
¨å±åºç¨é
ç½®ç®å½
ââruntime è¿è¡æ¶ç®å½
â ââindex indexåºç¨è¿è¡æ¶ç®å½
â ââadmin adminåºç¨è¿è¡æ¶ç®å½
~~~
ä»ç®å½ç»æå¯ä»¥çåºæ¥ï¼æ¯ä¸ªåºç¨ç¸å¯¹ä¿æç¬ç«ï¼å¹¶ä¸å¯ä»¥æ¯æå¤ä¸ªå
¥å£æ件ï¼åºç¨ä¸é¢è¿å¯ä»¥éè¿å¤çº§æ§å¶å¨æ¥ç»´æ¤æ§å¶å¨åç»ã
## èªå¨å¤åºç¨é¨ç½²
æ¯æå¨åä¸ä¸ªå
¥å£æ件ä¸è®¿é®å¤ä¸ªåºç¨ï¼å¹¶ä¸æ¯æåºç¨çæ å°å
³ç³»ä»¥åèªå®ä¹ãå¦æä½ éè¿`index.php`å
¥å£æ件访é®çè¯ï¼å¹¶ä¸æ²¡æ设置åºç¨`name`ï¼ç³»ç»èªå¨éç¨èªå¨å¤åºç¨æ¨¡å¼ã
èªå¨å¤åºç¨æ¨¡å¼çURLå°åé»è®¤ä½¿ç¨
~~~
// 访é®adminåºç¨
http://serverName/index.php/admin
// 访é®shopåºç¨
http://serverName/index.php/shop
~~~
> ä¹å°±æ¯è¯´`pathinfo`å°åç第ä¸ä¸ªåæ°å°±è¡¨ç¤ºå½åçåºç¨åï¼åé¢ææ¯è¯¥åºç¨çè·¯ç±æè
æ§å¶å¨/æä½ã
å¦æç´æ¥è®¿é®
~~~
http://serverName/index.php
~~~
访é®çå
¶å®æ¯`index`é»è®¤åºç¨ï¼å¯ä»¥éè¿`app.php`é
ç½®æ件ç`default_app`é
ç½®åæ°æå®é»è®¤åºç¨ã
~~~
// 设置é»è®¤åºç¨å称
'default_app' => 'home',
~~~
æ¥ç访é®
~~~
http://serverName/index.php
~~~
å
¶å®è®¿é®çæ¯`home`åºç¨ã
>[danger] èªå¨å¤åºç¨æ¨¡å¼ä¸ï¼è·¯ç±æ¯æ¯ä¸ªåºç¨ç¬ç«çï¼æä»¥ä½ æ²¡æ³çç¥URLéé¢çåºç¨åæ°ãä½å¯ä»¥ä½¿ç¨ååç»å®è§£å³ã
## å¤åºç¨æºè½è¯å«
å¦æ没æç»å®å
¥å£æè
ååçæ
åµä¸ï¼URLéé¢çåºç¨ä¸åå¨ï¼ä¾å¦è®¿é®ï¼
```
http://serverName/index.php/think
```
å设并ä¸åå¨`think`åºç¨ï¼è¿ä¸ªæ¶åç³»ç»ä¼èªå¨åæ¢å°ååºç¨æ¨¡å¼ï¼å¦ææå®ä¹å
¨å±çè·¯ç±ï¼ä¹ä¼è¿è¡è·¯ç±å¹é
æ£æ¥ã
å¦ææ们å¨`route/route.php`å
¨å±è·¯ç±ä¸å®ä¹äºï¼
```
Route::get('think', function () {
return 'hello,ThinkPHP!';
});
```
访é®ä¸é¢çURLå°±ä¼è¾åº
~~~
hello,ThinkPHP!
~~~
å¦æä½ å¸æ`think`åºç¨ä¸åå¨çæ¶åï¼ç´æ¥è®¿é®é»è®¤åºç¨çè·¯ç±ï¼å¯ä»¥å¨`app.php`ä¸é
ç½®
```
// å¼å¯åºç¨å¿«é访é®
'app_express' => true,
// é»è®¤åºç¨
'default_app' => 'home',
```
è¿ä¸ªæ¶åå°±ä¼è®¿é®`home`åºç¨ä¸çè·¯ç±ã
## å¢å åºç¨å
¥å£
å
许为æ¯ä¸ªåºç¨å建åç¬çå
¥å£æ件èä¸éè¿`index.php`å
¥å£æ件访é®å¤ä¸ªåºç¨ï¼ä¾å¦å建ä¸ä¸ª`admin.php`å
¥å£æ件æ¥è®¿é®`admin`åºç¨ã
~~~
// [ åºç¨å
¥å£æ件 ]
namespace think;
require __DIR__ . '/../vendor/autoload.php';
// æ§è¡HTTPåºç¨å¹¶ååº
$http = (new App())->http;
$response = $http->run();
$response->send();
$http->end($response);
~~~
> å¤åºç¨ä½¿ç¨ä¸åçå
¥å£çæ
åµä¸ï¼æ¯ä¸ªå
¥å£æ件çå
容é½æ¯ä¸æ ·çï¼é»è®¤å
¥å£æ件åï¼ä¸å«åç¼ï¼å°±æ¯åºç¨åã
使ç¨ä¸é¢çæ¹å¼è®¿é®`admin`åºç¨
~~~
http://serverName/admin.php
~~~
å¦æä½ çå
¥å£æ件åååºç¨ä¸ä¸è´ï¼ä¾å¦ä½ çåå°`admin`åºç¨ï¼å
¥å£æ件å使ç¨äº`test.php`ï¼é£ä¹å
¥å£æ件éè¦æ¹æï¼
~~~
// [ åºç¨å
¥å£æ件 ]
namespace think;
require __DIR__ . '/../vendor/autoload.php';
// æ§è¡HTTPåºç¨å¹¶ååº
$http = (new App())->http;
$response = $http->name('admin')->run();
$response->send();
$http->end($response);
~~~
## è·åå½ååºç¨
å¦æéè¦è·åå½åçåºç¨åï¼å¯ä»¥ä½¿ç¨
```
app('http')->getName();
```
## åºç¨ç®å½è·å
ååºç¨åå¤åºç¨æ¨¡å¼ä¼å½±åä¸äºç³»ç»è·¯å¾çå¼ï¼ä¸ºäºæ´å¥½çç解æ¬æåçå
容ï¼ä½ å¯è½éè¦ç解ä¸é¢å 个系ç»è·¯å¾æ表示çä½ç½®ã
| ç®å½ä½ç½® | ç®å½è¯´æ | è·åæ¹æ³ï¼å©æå½æ°ï¼ |
| --- | --- | --- |
| æ ¹ç®å½ | 项ç®æå¨çç®å½ï¼é»è®¤èªå¨è·åï¼å¯ä»¥å¨å
¥å£æ件å®ä¾å`App`ç±»çæ¶åä¼ å
¥ã | `root_path()` |
| åºç¡ç®å½ | æ ¹ç®å½ä¸ç`app`ç®å½ | `base_path()` |
| åºç¨ç®å½ | å½ååºç¨æå¨çç®å½ï¼å¦ææ¯ååºç¨æ¨¡å¼åååºç¡ç®å½ï¼å¦ææ¯å¤åºç¨æ¨¡å¼ï¼åæ¯`app`/åºç¨åç®å½ | `app_path()` |
| é
ç½®ç®å½ | æ ¹ç®å½ä¸ç`config`ç®å½ | `config_path()` |
| è¿è¡æ¶ç®å½ | æ¡æ¶è¿è¡æ¶çç®å½ï¼ååºç¨æ¨¡å¼å°±æ¯æ ¹ç®å½ç`runtime`ç®å½ï¼å¤åºç¨æ¨¡å¼ä¸º`runtime`/åºç¨åç®å½ | `runtime_path()` |
>[danger] 注æï¼åºç¨æ¯æ使ç¨`composer`å
ï¼è¿ä¸ªæ¶åç®å½å¯è½æ¯`composer`å
çç±»åºæå¨ç®å½ã
对äºéèªå¨å¤åºç¨é¨ç½²çæ
åµï¼å¦æè¦å è½½`composer`åºç¨ï¼éè¦å¨å
¥å£æ件ä¸è®¾ç½®åºç¨è·¯å¾ï¼
~~~
// [ åºç¨å
¥å£æ件 ]
namespace think;
require __DIR__ . '/../vendor/autoload.php';
// æ§è¡HTTPåºç¨å¹¶ååº
$http = (new App())->http;
$response = $http->path('path/to/app')->run();
$response->send();
$http->end($response);
~~~
## åºç¨æ å°
èªå¨å¤åºç¨æ¨¡å¼ä¸ï¼æ¯æåºç¨çå«åæ å°ï¼ä¾å¦ï¼
~~~
'app_map' => [
'think' => 'admin', // æadminåºç¨æ å°ä¸ºthink
],
~~~
åºç¨æ å°åï¼åæ¥çåºç¨åå°ä¸è½è¢«è®¿é®ï¼ä¾å¦ä¸é¢ç`admin`åºç¨ä¸è½ç´æ¥è®¿é®ï¼åªè½éè¿`think`åºç¨è®¿é®ã
åºç¨æ å°æ¯ææ³è§£æï¼ä¾å¦ï¼
~~~
'app_map' => [
'think' => 'admin',
'home' => 'index',
'*' => 'index',
],
~~~
表示å¦æURL访é®çåºç¨ä¸å¨å½å设置çæ å°éé¢ï¼åèªå¨æ å°ä¸º`index`åºç¨ã
å¦æè¦ä½¿ç¨`composer`å è½½åºç¨ï¼éè¦è®¾ç½®
```
'app_map' => [
'think' => function($app) {
$app->http->path('path/to/composer/app');
},
],
```
## ååç»å®åºç¨
å¦æä½ çå¤åºç¨ä½¿ç¨å¤ä¸ªåååæè
ç¬ç«åå访é®ï¼ä½ å¯ä»¥å¨`config/app.php`é
ç½®æ件ä¸å®ä¹ååååºç¨çç»å®ã
~~~
'domain_bind' => [
'blog' => 'blog', // blogåååç»å®å°blogåºç¨
'shop.tp.com' => 'shop', // å®æ´ååç»å®
'*' => 'home', // äºçº§æ³ååç»å®å°homeåºç¨
],
~~~
## ç¦æ¢åºç¨è®¿é®
ä½ å¦æä¸å¸ææ个åºç¨éè¿URL访é®ï¼ä¾å¦ï¼ä½ å¢å äºä¸ä¸ª`common`åç®å½ç¨äºæ¾ç½®ä¸äºå
Œ
±ç±»åºï¼ä½ å¯ä»¥è®¾ç½®
```
'deny_app_list' => ['common']
```
>[danger] å¤åºç¨æ¨¡å¼å¹¶éæ ¸å¿å
置模å¼ï¼å®æ¹æä¾çå¤åºç¨æ©å±æ´å¤æ¯æç å¼çï¼ä½ å®å
¨å¯ä»¥éè¿ä¸é´ä»¶æ¥æ©å±éåèªå·±çå¤åºç¨æ¨¡å¼
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- 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
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿