## 練習(xí)0:安裝和準(zhǔn)備
>[info] 任務(wù):安裝好ThinkPHP`5.1`,以及為后面的學(xué)習(xí)做一些準(zhǔn)備。
安裝ThinkPHP`5.1`之前,首先確認(rèn)下你的PHP環(huán)境是`PHP5.6+`,由于PHP`5.6` 和`7.0` 只在大概1年內(nèi)提供安全補(bǔ)丁更新,因此如果條件允許推薦使用`PHP7.1+`版本。
有很多新手經(jīng)常會(huì)問一個(gè)問題,`ThinkPHP5`是否支持`PHP7`?注意看 ThinkPHP5 的安裝環(huán)境寫的是`PHP5.6+` 而不是`PHP5.6`,顯然`PHP7`屬于`PHP5.6+`吧,除非你是在問是否支持`PHP8.0`,我可能會(huì)回答不支持,因?yàn)槲也恢繾PHP8.0`長啥樣,我怎么知道支不支持?言下之意,如果是當(dāng)前框架版本發(fā)布的時(shí)候尚未發(fā)布的PHP版本,那么是否支持是不確定的。但目前可以肯定的是至少可以支持`PHP7.2`版本,無論是ThinkPHP`5.0`還是`5.1`。
安裝`ThinkPHP5`很簡單,前提是你首先已經(jīng)安裝`Composer`或者`Git`(這兩個(gè)是PHP開發(fā)者必不可少的),推薦的方式是使用`Composer`安裝,在`PHP`生態(tài)中,[Composer](https://getcomposer.org/) 是最先進(jìn)的依賴管理方案,官方的很多擴(kuò)展也都是基于`Composer`的(關(guān)于`Composer`使用的更多討論參考后面的拓展討論)。
打開命令行窗口(windows用戶)或控制臺(tái)(Linux、Mac 用戶)并執(zhí)行如下命令:
~~~
composer create-project topthink/think tp5
~~~
成功完成后切換到`tp5`目錄下面,執(zhí)行如下命令:
~~~
php think run
~~~
會(huì)顯示類似信息:
~~~cmd
D:\www\tp5>php think run
ThinkPHP Development server is started On <http://127.0.0.1:8000/>
You can exit with `CTRL-C`
Document root is: D:\www\tp5/public
~~~
實(shí)際上運(yùn)行了一個(gè)`PHP`內(nèi)置的`web`服務(wù)器。
接下來,我們可以直接通過下面的地址訪問:
~~~
http://127.0.0.1:8000
~~~
就會(huì)看到框架內(nèi)置的歡迎頁面。

至此,你的ThinkPHP安裝已經(jīng)順利完成!
>[info] 當(dāng)然,內(nèi)置服務(wù)器僅供簡單的學(xué)習(xí)測試,最好還是安裝一個(gè)WEB服務(wù)器進(jìn)行開發(fā)測試。
關(guān)于如何安裝`web`服務(wù)器,本書不做任何的描述,這是你學(xué)習(xí)PHP的基礎(chǔ)必備。我們后面假設(shè)你的運(yùn)行環(huán)境沒有任何問題,并且能支持`PATH_INFO`。
>[danger] 注意,除非你能完全掌控并解決問題,否則不要更改任何目錄和文件的名稱和位置,容易導(dǎo)致不可預(yù)知的問題。
### 準(zhǔn)備工作
為了更方便后面的學(xué)習(xí)和實(shí)例,我們最好做好幾項(xiàng)準(zhǔn)備工作:
#### 第一:搭建`WebServer`以及數(shù)據(jù)庫環(huán)境
選擇和準(zhǔn)備好你用的順手的`WebServer`,最好是配置好URL重寫和支持`pathinfo`的(否則容易遇到一些不可預(yù)知的麻煩,我見到太多新手卡在這個(gè)環(huán)節(jié))。如果你還沒有的話,可以嘗試下 [WampServer3.0](https://sourceforge.net/projects/wampserver/files/WampServer%203/WampServer%203.0.0/),是個(gè)用于`Windows`的`web`服務(wù)器,并且自帶了數(shù)據(jù)庫服務(wù),支持切換不同的PHP版本。
>[danger] 如果你實(shí)在怕麻煩,可以使用PHP內(nèi)置的WEB服務(wù)器,也可以勝任本書的學(xué)習(xí)過程。
#### 第二:創(chuàng)建學(xué)習(xí)用的虛擬主機(jī)`Vhost`
使用你的`WebServer`創(chuàng)建一個(gè)`tp5.com`虛擬主機(jī),目錄指向安裝后的`tp5/public`目錄(在本篇的拓展討論部分,有一個(gè)使用`WampServer3`添加虛擬主機(jī)的說明供參考)。
>[danger] 請注意本書的所有例子都假設(shè)你的訪問域名是`tp5.com`而不是`localhost`。如果你使用了其它的虛擬主機(jī)名稱,請自行調(diào)整訪問地址。
如果你暫時(shí)沒有任何服務(wù)器環(huán)境,也可以直接使用PHP內(nèi)置的web服務(wù)器來學(xué)習(xí)測試,不過記得在你的`hosts`文件中添加:
~~~
127.0.0.1 tp5.com
~~~
然后在`tp5`目錄下面執(zhí)行(下面的命令最好關(guān)閉你其它的`webServer`,否則可能會(huì)因?yàn)槎丝谡加枚荒艹晒?dòng))
~~~
php think run -H tp5.com -p 80
~~~
> 記得把`php`可執(zhí)行文件的路徑加入系統(tǒng)搜索路徑。
然后,你就可以直接訪問
~~~
http://tp5.com
~~~
看到前面出現(xiàn)的歡迎頁面了,你的ThinkPHP5學(xué)習(xí)之旅即將啟程^_^
#### 第三:開啟調(diào)試模式
`5.1`版本默認(rèn)使用部署模式,在開發(fā)過程中建議統(tǒng)一開啟應(yīng)用的調(diào)試模式,找到`config/app.php`文件,修改設(shè)置`app_debug`參數(shù):
~~~
// 開啟調(diào)試模式
'app_debug' => true,
~~~
>[danger] 在你的應(yīng)用真實(shí)部署上線后,務(wù)必確認(rèn)關(guān)閉調(diào)試模式。
## 拓展討論
### 設(shè)置`Vhost`訪問
以`WampServer3.0`為例,說下如何添加`Vhost`,啟動(dòng)你的`WampServer`后,打開瀏覽器,訪問:
~~~
http://localhost/
~~~
然后在頁面的左下角找到 `Add a Virtual Host`點(diǎn)擊

打開頁面如圖所示:

按照提示依次填寫域名(你的Vhost地址,例如`tp5.com`)、對(duì)應(yīng)WEB目錄(注意`ThinkPHP5`的`web`目錄應(yīng)該設(shè)置為`tp5/public`而不是`tp5`)和對(duì)應(yīng)解析IP(一般無需填寫默認(rèn)即可)。
提交后會(huì)顯示

在WampServer圖標(biāo)上點(diǎn)擊右鍵選擇`Tools->Restart DNS`。

重啟DNS之后,你就可以使用`tp5.com`來訪問測試了。
>[danger] 如果你使用的是其它的WEB服務(wù)器或者其它系統(tǒng),請自行百度完成`Vhost`的添加,以方便后面的測試。
### `Composer`注意事項(xiàng)
>[info] `Composer`是PHP的依賴關(guān)系管理工具,對(duì)原有的開發(fā)模式和類庫擴(kuò)展機(jī)制是一種顛覆。原本你無論是下載還是`Git`獲取,一般都只能手動(dòng)更新,而無法做到對(duì)依賴類庫的自動(dòng)更新(雖然`Git`可以很方便更新,但仍然無法完成依賴更新),`Composer`提供了一種全新的安裝和更新方式,目前主流框架和類庫都已經(jīng)支持`Composer`安裝方式了,使用簡單的命令行操作就可以安裝和更新類庫,支持`Linux`和`Windows`平臺(tái)。
如果還不理解,對(duì)于新手來說可以簡單理解為`Composer`是一種`PHP`開發(fā)趨勢,同時(shí)是你`PHP`開發(fā)的“素材庫”,你只需要簡單的`composer require`就可以最大程度簡化你的開發(fā)工作。
>[info] 人生苦短,我用 `Composer`
>
關(guān)于`Composer`的幾點(diǎn)使用提醒:
>[danger] 如果你不是在國外的話,建議進(jìn)行下面的全局設(shè)置使用[中國鏡像](https://pkg.phpcomposer.com/ ),所有不愿意用`composer`的用戶大部分是因?yàn)闆]有使用國內(nèi)鏡像。
~~~
composer config -g repo.packagist composer https://packagist.phpcomposer.com
~~~
`Composer` 安裝的時(shí)候注意版本號(hào),有時(shí)候框架一直在更新,而你可能只需要安裝特定版本的,那么可以指定版本號(hào)。
`composer`的安裝目錄一般不建議納入你的應(yīng)用`Git`版本庫,`vendor`目錄(或者你安裝依賴的其它目錄)都應(yīng)該被添加進(jìn)` .gitignore`,然后讓所有開發(fā)人員使用`Composer`來安裝依賴包。
如果你的依賴庫有單獨(dú)的內(nèi)部版本庫地址,你可以把`Composer`的源設(shè)置為本地的`GIT`版本庫,在`composer.json`文件中添加:
~~~
"repositories": {
"packagist": {
"type": "svn",
"url": "https://git.yourdomain.com"
}
}
~~~
最后,附上幾個(gè)`Composer`學(xué)習(xí)資源:
* https://packagist.org/ Composer安裝包列表
* http://www.phpcomposer.com 比較好用的中國鏡像(已經(jīng)廢棄)
*
* http://docs.phpcomposer.com composer中文文檔
希望還在猶豫的朋友早日擁抱`Composer`!
### 代碼格式化
在你進(jìn)行學(xué)習(xí)和開發(fā)的過程中,一定要養(yǎng)成代碼格式化的習(xí)慣,不要覺得寫出能運(yùn)行的代碼就行了,代碼規(guī)范體現(xiàn)了一個(gè)從業(yè)者的素質(zhì),如果是團(tuán)隊(duì)開發(fā),應(yīng)該保持代碼格式化的風(fēng)格統(tǒng)一,基本上主流的IDE都可以支持代碼格式化操作。
如果`PHPStorm`可以使用`Ctrl + Alt + L`進(jìn)行格式化(設(shè)置代碼樣式:File -> Settings -> Code Style ->PHP),`VSCode`和`Sublime Text`推薦安裝`phpfmt`插件。
> 筆者使用`Sublime Text 3`和`phpfmt`插件并設(shè)置了每次保存的時(shí)候自動(dòng)進(jìn)行代碼格式化,本書中的所有代碼都遵循統(tǒng)一的代碼規(guī)范。
- 前言
- 練習(xí)0:安裝和準(zhǔn)備
- 練習(xí)1:Hello,ThinkPHP
- 練習(xí)2:添加操作方法
- 練習(xí)3:注冊簡單路由
- 練習(xí)4:使用注解路由
- 練習(xí)5:輸出請求信息
- 練習(xí)6:獲取請求變量
- 練習(xí)7:添加404頁面
- 練習(xí)8:添加模板輸出
- 練習(xí)9:使用模板變量
- 練習(xí)10:頁面重定向
- 練習(xí)11:查詢數(shù)據(jù)(一)
- 練習(xí)12:查詢數(shù)據(jù)(二)
- 練習(xí)13:查詢數(shù)據(jù)(三)
- 練習(xí)14:查詢數(shù)據(jù)(四)
- 練習(xí)15:寫入數(shù)據(jù)(一)
- 練習(xí)16:寫入數(shù)據(jù)(二)
- 練習(xí)17:寫入數(shù)據(jù)(三)
- 練習(xí)18:更新數(shù)據(jù)
- 練習(xí)19:刪除數(shù)據(jù)
- 練習(xí)20:獲取一列數(shù)據(jù)
- 練習(xí)21:獲取某個(gè)字段值