[TOC]
## 簡介
由于不同操作系統回車出現的 `\r` 對 shell 的影響,所以在開始編碼前我們先使用 [editorconfig](https://editorconfig.org/) 來規范代碼風格。
## 插件安裝
首先,如官方文檔所說以下編輯器不需要安裝插件,只需要配置 `.editorconfig`

以下編輯器需要安裝插件和配置 `.editorconfig` 文件

下面我們介紹一下在編輯器 Sublime Text 3 和 PhpStrom 里如何安裝 `EditorConfig` 插件,如果你使用的是其它需要安裝插件的編輯器話,請自行 Google 所使用編輯器如何安裝 `EditorConfig` 插件。
### Sublime Text 3 安裝插件
1. 安裝 Package Control
Package Control 是 Sublime Text 編輯器的插件管理包,所以我們首先要安裝它。有了它之后,我們就可以很方便的瀏覽、安裝和卸載 Sublime Text 中的插件。**如果你已經安裝了 Package Control 請從本小節的第 2 步開始安裝插件。**
打開 Package Control 的網頁 [https://packagecontrol.io/](https://packagecontrol.io/) ,點擊右側的 `Install Now` 按鈕。

進入 [https://packagecontrol.io/installation#st3](https://packagecontrol.io/installation#st3) 頁面,選擇 `SUBLIME TEXT 3` 選項卡,復制出里面的代碼段:

代碼復制如下:
```shell
import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
```
快捷鍵 `Ctrl+~` 或者 `Ctrl+Shift+p` 打開 Sublime Text 3 控制臺,將之前復制的代碼粘貼到控制臺里,按下 `Eenter` 鍵。
等待其安裝完成后關閉程序,重新啟動 Sublime Text 3 ,點開菜單 `Preferences(首選項)`可見 `Package Control` 項,說明插件管理包已安裝成功。
2. 快捷鍵 `Ctrl+Shift+p` ,打開 `Command Palette` 懸浮對話框,在頂部輸入 `Install`, 然后下選點擊 `Package Control:Install Package` 。

3. 在出現的懸浮對話框中輸入 `Editor`, 然后點選下面的 `EditorConfig` 插件,就會自動開始安裝,請耐心等待。

4. 安裝完后重新啟動 Sublime Text 3 。
### PhpStorm 安裝插件
1. 打開設置面板

2. 打開插件頁面

3. 在插件面板里搜索 `EditorConfig` 插件并完成安裝

## 插件配置
在項目根目錄創建 `.editorconfig` 文件:
```shel
$ touch .editorconfig
```
新創建的 `.editorconfig` 文件配置信息如下:
```
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.yml]
indent_size = 2
[*.{js,html,css}]
indent_size = 2
```
在這里,我們簡單介紹一下以上設置的意義,想了解更多 `.editorconfig` 設置參數介紹請閱讀 [editorConfig編輯器配置](https://www.jianshu.com/p/00ac7bd5e74e) :
1. 所有文件的代碼縮進方式是『空格』,給所有文件結尾添加一個空行;
2. 除 `md` 文件外其它格式文件保存時自動刪除行尾空格;
3. `js`、`css` 和 `html` 文件按 **2** 個空格縮進代碼,其它格式文件按 **4** 個空格縮進代碼。
## 提交代碼
接下來,把代碼納入到版本管理:
```shell
$ git add -A
$ git commit '統一代碼風格'
```
- 第一章 基礎信息
- 序言
- 關于作者
- PHP和ThinkPHP
- 如何正確閱讀本書
- 寫作約定
- 開發規范
- 章節體例
- 本書源碼
- 第二章 舞臺布置
- 開發環境
- 產品分解
- Git和GitHub
- 創建項目
- 數據庫視圖管理工具
- 統一代碼風格
- 目錄結構
- 配置信息
- 后臺應用搭建
- 助手函數
- 前臺布局模板
- 基礎控制器
- 小結
- 第三章 注冊登錄
- 數據遷移
- 表單提交
- 表單驗證
- 模型驗證
- 短信提供商
- 發送短信
- 手機驗證
- 注冊提醒
- 登錄與退出
- 重置密碼
- 數據填充
- 小結
- 第四章 用戶相關
- 個人中心
- 編輯個人資料
- 上傳圖片
- 上傳頭像
- 顯示頭像
- 限制頭像分辨率
- 裁剪頭像
- 顯示注冊時間
- 授權訪問
- 小結
- 第五章 帖子列表
- 話題分類
- 話題模型
- 話題列表
- 性能優化
- 分類話題列表
- 話題列表排序
- 用戶發布的話題
- 分頁器美化
- 小結
- 第六章_帖子CURD
- 創建話題
- 生成摘要
- 編輯器優化
- 上傳圖片
- 顯示話題
- 編輯話題
- 刪除話題
- 小結
- 第七章 帖子回復
- 回復模型
- 回復列表
- 發表回復
- 刪除回復
- XSS 安全漏洞
- 小結
- 第八章 角色權限和管理后臺
- 多角色用戶權限
- 用戶管理
- 話題管理
- 回復管理
- 小結
- 第九章 雜項
- 邊欄活躍用戶
- 用戶最后登錄時間
- 邊欄資源推薦
- 站點首頁
- 小結
- 第十章 總結
- 全書總結
- 附錄
- 淺談ThinkPHP6.0 路由