內容簡介
本書是暢銷書升級版,全書共分為28章,每章都是PHP獨立知識點的總結,全部以現在最新的PHP7以上版本套用語法為主。內容涵蓋了動態網站開發所需要的後端全棧技術、PHP的常用功能模組和實用技巧、MySQL和Redis兩種資料庫的設計與套用、PHP面向對象的程式設計思想、資料庫抽象層PDO、Web開發的設計模式、自定義接口技術、全球套用排行第一的Laravel5.5框架技術,並專門組建專業的開發團隊為本書重新開發商業項目EUDPlayer作為案例等。每章都有大量的實用示例及詳盡的注釋,以加速讀者的理解和學習,並為本書單獨開發一個微信小程式(圖書兄弟),提供和章節配套的精製視頻教程、案例和課件下載、擴展文章、章節測試等多方位內容。
對於PHP套用開發的新手而言,本書不失為一本好的入門教材,內容既實用又全面,所有實例都可以在開發中直接套用,並輔以配套的視頻教程,使讀者輕鬆掌握所學知識。另外,本書也適合有一定基礎的網路開發人員和網路愛好者,以及大中專院校的師生閱讀與參考。不僅可以作為PHP開發的學習用書,還可以作為從事Web開發的程式設計師的參考用書和必備手冊。對於行家來說,本書也是一本難得的參考手冊,讀者必將從中獲益。
目錄
第1章 LAMP網站構建 1
1.1 Web概述 1
1.1.1 Web套用的優勢 2
1.1.2 Web 2.0時代的網際網路 3
1.1.3 Web開發標準 4
1.1.4 認識腳本語言 5
1.2 動態網站開發所需的Web構件 5
1.2.1 客戶端瀏覽器 6
1.2.2 超文本標記語言(HTML) 7
1.2.3 層疊樣式表(CSS) 8
1.2.4 客戶端腳本程式語言JavaScript 8
1.2.5 Web伺服器 9
1.2.6 伺服器端程式語言 10
1.2.7 資料庫管理系統 10
1.3 幾種主流的Web應用程式平台 11
1.3.1 Web應用程式開發平台對比分析 11
1.3.2 動態網站開發平台技術比較 12
1.4 HTTP協定與Web的關係 13
1.4.1 HTTP協定概述 13
1.4.2 HTTP協定結構 14
1.4.3 HTTP請求訊息 15
1.4.4 HTTP回響訊息 15
1.4.5 HTTPS是什麼 16
1.4.6 URL概述 16
1.5 Web的工作原理 17
1.5.1 情景1:不帶應用程式伺服器和資料庫的伺服器 17
1.5.2 情景2:帶應用程式伺服器的Web伺服器 18
1.5.3 情景3:瀏覽器訪問伺服器端的資料庫 19
1.6 LAMP網站開發組合概述 19
1.6.1 Linux作業系統 20
1.6.2 Web伺服器Apache 20
1.6.3 MySQL資料庫管理系統 20
1.6.4 PHP後台腳本程式語言 21
1.6.5 LAMP的發展趨勢 21
1.6.6 Web的未來發展 21
1.7 小結 22
第2章 PHP的套用與發展 23
2.1 PHP是什麼 23
2.1.1 從認識PHP開始 23
2.1.2 PHP都能做什麼 24
2.2 PHP的套用 26
2.2.1 開發網站和移動網站的套用 26
2.2.2 在企業內部信息化系統中的套用 27
2.2.3 在App接口開發方面的套用 27
2.2.4 對微信公眾平台二次開發的套用 28
2.2.5 微信小程式開發套用 29
2.2.6 PHP在其他方面的套用 29
2.3 PHP的開發優勢 29
2.3.1 簡單易學 30
2.3.2 開發效率高 30
2.3.3 開發成本低 30
2.3.4 程式執行效率高 30
2.3.5 安全性良好 31
2.3.6 功能強大 31
2.3.7 可選擇性多 31
2.4 PHP的發展 31
2.4.1 PHP的誕生 31
2.4.2 PHP的疊代過程 32
2.4.3 PHP的現在 33
2.4.4 PHP的未來 33
2.5 如何學習PHP 34
2.5.1 確定學習的目標 34
2.5.2 PHP學習線路圖 34
2.5.3 堅持動手實驗 36
2.5.4 Bug解決之道 36
2.5.5 看教學視頻,讓學習變得簡單 37
2.5.6 優秀的Web程式設計師是怎樣練成的 37
2.6 小結 39
第3章 從搭建你的PHP開發環境開始 40
3.1 幾種常見的PHP環境安裝方式 40
3.1.1 在Linux系統上以原始碼包的方式安裝環境 40
3.1.2 在Windows系統上安裝Web工作環境 41
3.1.3 搭建學習型的PHP工作環境 41
3.2 環境安裝對作業系統的選擇 41
3.2.1 選擇網站運營的作業系統 41
3.2.2 選擇網站開發的作業系統 42
3.3 安裝集成PHP開發環境 42
3.3.1 安裝前準備 42
3.3.2 安裝步驟 42
3.3.3 環境測試 43
3.4 集成環境中各伺服器的配置 45
3.4.1 Apache配置 46
3.4.2 改變文檔根www的位置 46
3.4.3 修改PHP的默認配置 47
3.4.4 phpMyAdmin的套用 47
3.4.5 修改MySQL默認的訪問許可權 48
3.5 小結 49
第4章 PHP的基本語法 50
4.1 第一個PHP腳本程式 50
4.2 PHP語言標記 52
4.2.1 將PHP代碼嵌入HTML中的位置 53
4.2.2 解讀開始和結束標記 53
4.3 指令分隔設定“分號” 54
4.4 程式注釋 54
4.5 在程式中使用空白的處理 56
4.6 變數 57
4.6.1 變數的聲明 57
4.6.2 變數的命名 58
4.6.3 可變變數 59
4.6.4 變數的引用賦值 59
4.7 變數的類型 60
4.7.1 類型介紹 60
4.7.2 布爾型(boolean) 61
4.7.3 整型(integer) 62
4.7.4 浮點型(float或double) 63
4.7.5 字元串(string) 63
4.7.6 數組(array) 65
4.7.7 對象(object) 66
4.7.8 資源類型(resource) 66
4.7.9 NULL類型 67
4.7.10 偽類型介紹 67
4.8 數據類型之間相互轉換 67
4.8.1 自動類型轉換 68
4.8.2 強制類型轉換 68
4.8.3 類型轉換細節 69
4.8.4 變數類型的測試函式 69
4.9 常量 70
4.9.1 常量的定義和使用 70
4.9.2 常量和變數 71
4.9.3 PHP新版本可以使用表達式定義常量 72
4.9.4 define和const的區別 72
4.9.5 系統中的預定義常量 72
4.9.6 PHP中的魔術常量 73
4.10 PHP中的運算符 74
4.10.1 算術運算符 74
4.10.2 字元串運算符 76
4.10.3 賦值運算符 76
4.10.4 比較運算符 77
4.10.5 邏輯運算符 79
4.10.6 位運算符 80
4.10.7 其他運算符 82
4.10.8 運算符的優先權 83
4.11 表達式 84
4.12 容易混淆的特殊值 84
4.13 小結 85
第5章 PHP的流程控制結構 86
5.1 分支結構 86
5.1.1 單一條件分支結構(if) 86
5.1.2 雙向條件分支結構(else子句) 87
5.1.3 多向條件分支結構(elseif子句) 88
5.1.4 多向條件分支結構(switch語句) 89
5.1.5 巢狀條件分支結構 91
5.1.6 條件分支結構實例套用(簡單計算器) 92
5.2 循環結構 93
5.2.1 while語句 94
5.2.2 do…while循環 95
5.2.3 for語句 96
5.3 特殊的流程控制語句 99
5.3.1 break語句 99
5.3.2 continue語句 99
5.3.3 exit語句 100
5.4 PHP的新版特性——goto語句 100
5.5 小結 102
第6章 PHP的函式套用 103
6.1 函式的定義 103
6.2 自定義函式 104
6.2.1 函式的聲明 104
6.2.2 函式的調用 105
6.2.3 函式的參數 106
6.2.4 函式的返回值 107
6.2.5 標量類型聲明 109
6.3 函式的工作原理和結構化編程 111
6.4 PHP變數的範圍 111
6.4.1 局部變數 111
6.4.2 全局變數 112
6.4.3 靜態變數 113
6.5 聲明及套用各種形式的PHP函式 114
6.5.1 常規參數的函式 115
6.5.2 偽類型參數的函式 115
6.5.3 引用參數的函式 115
6.5.4 默認參數的函式 116
6.5.5 可變個數參數的函式 118
6.5.6 回調函式 119
6.6 遞歸函式 122
6.7 使用自定義函式館 123
6.8 PHP匿名函式和閉包 124
6.9 小結 125
第7章 PHP中的數組與數據結構 126
7.1 數組的分類 126
7.2 數組的定義 127
7.2.1 以直接賦值的方式聲明數組 128
7.2.2 使用array語言結構新建數組 129
7.2.3 數組簡寫語法 130
7.2.4 多維數組的聲明 130
7.3 數組的遍歷 132
7.3.1 使用for語句循環遍歷數組 132
7.3.2 聯合使用list、each和while循環遍歷數組 134
7.3.3 使用foreach語句遍歷數組 135
7.3.4 使用數組的內部指針控制函式遍歷數組 138
7.4 預定義數組 139
7.4.1 伺服器變數:$_SERVER 140
7.4.2 環境變數:$_ENV 140
7.4.3 URL GET變數:$_GET 141
7.4.4 HTTP POST變數:$_POST 141
7.4.5 request變數:$_REQUEST 142
7.4.6 HTTP檔案上傳變數:$_FILES 142
7.4.7 HTTP Cookies:$_COOKIE 142
7.4.8 Session變數:$_SESSION 143
7.4.9 Global變數:$GLOBALS 143
7.5 數組的相關處理函式 143
7.5.1 數組的鍵/值操作函式 143
7.5.2 統計數組元素的個數和唯一性 146
7.5.3 使用回調函式處理數組的函式 147
7.5.4 數組的排序函式 150
7.5.5 拆分、合併、分解和接合數組 153
7.5.6 數組與數據結構 155
7.5.7 其他有用的數組處理函式 157
7.6 操作PHP數組需要注意的一些細節 158
7.6.1 數組運算符號 158
7.6.2 刪除數組中的元素 159
7.6.3 關於數組下標的注意事項 159
7.7 小結 160
第8章 PHP面向對象的程式設計 161
8.1 面向對象概述 161
8.1.1 類和對象之間的關係 161
8.1.2 面向對象的程式設計 162
8.2 如何抽象一個類 163
8.2.1 類的聲明 163
8.2.2 成員屬性 164
8.2.3 成員方法 164
8.3 通過類實例化對象 166
8.3.1 實例化對象 166
8.3.2 對象類型在記憶體中的分配 167
8.3.3 對象中成員的訪問 168
8.3.4 特殊的對象引用“$this” 169
8.3.5 構造方法與析構方法 171
8.4 封裝性 173
8.4.1 設定私有成員 174
8.4.2 私有成員的訪問 175
8.4.3 _ _set、_ _get、_ _isset和_ _unset4個方法 176
8.5 繼承性 180
8.5.1 類繼承的套用 181
8.5.2 訪問類型控制 182
8.5.3 子類中重載父類的方法 184
8.6 常見的關鍵字和魔術方法 186
8.6.1 final關鍵字的套用 186
8.6.2 static關鍵字的使用 187
8.6.3 單態設計模式 188
8.6.4 const關鍵字 189
8.6.5 instanceof關鍵字 189
8.6.6 克隆對象 190
8.6.7 類中通用的方法_ _toString191
8.6.8 PHP 7新加入的方法_ _ debugInfo 191
8.6.9 _ _call方法的套用 192
8.6.10 自動載入類 194
8.6.11 對象串列化 194
8.7 抽象類與接口 197
8.7.1 抽象類 197
8.7.2 接口技術 198
8.8 多態性的套用 200
8.9 PHP 5.4的Trait特性 201
8.9.1 Trait的聲明 201
8.9.2 Trait的基本使用 202
8.10 PHP 7的匿名類 204
8.10.1 匿名類的聲明 204
8.10.2 匿名類的套用 205
8.11 PHP 5.3新增加的命名空間 206
8.11.1 命名空間的基本套用 206
8.11.2 命名空間的子空間和公共空間 208
8.11.3 命名空間中的名稱和術語 209
8.11.4 別名和導入 209
8.12 面向對象版圖形計算器 211
8.12.1 需求分析 211
8.12.2 功能設計及實現 212
8.12.3 類的組織架構 216
8.13 小結 217
第9章 字元串處理 219
9.1 字元串的處理介紹 219
9.1.1 字元串的處理方式 219
9.1.2 字元串類型的特點 219
9.1.3 雙引號中的變數解析總結 220
9.2 常用的字元串輸出函式 221
9.3 常用的字元串格式化函式 223
9.3.1 去除空格和字元串填補函式 224
9.3.2 字元串大小寫的轉換 225
9.3.3 和HTML標籤相關的字元串格式化 225
9.3.4 其他字元串格式化函式 228
9.4 字元串比較函式 229
9.4.1 按位元組順序進行字元串比較 230
9.4.2 按自然排序進行字元串比較 230
9.5 小結 231
第10章 正則表達式 232
10.1 正則表達式簡介 232
10.2 正則表達式的語法規則 233
10.2.1 定界符 233
10.2.2 原子 234
10.2.3 元字元 235
10.2.4 模式修正符 238
10.3 與Perl兼容的正則表達式函式 238
10.3.1 字元串的匹配與查找 239
10.3.2 字元串的替換 242
10.3.3 字元串的分割和連線 246
10.4 文章發布操作示例 248
10.5 小結 252
第11章 PHP的錯誤和異常處理 253
11.1 錯誤處理 253
11.1.1 錯誤報告級別 253
11.1.2 調整錯誤報告級別 254
11.1.3 使用trigger_error函式代替die函式 256
11.1.4 自定義錯誤處理 256
11.1.5 寫錯誤日誌 257
11.2 異常處理 259
11.2.1 異常處理實現 260
11.2.2 擴展PHP內置的異常處理類 260
11.2.3 捕獲多個異常 262
11.2.4 PHP異常處理新特性 263
11.3 小結 264
第12章 PHP的日期和時間 265
12.1 UNIX時間戳 265
12.1.1 將日期和時間轉變成UNIX時間戳 265
12.1.2 日期的計算 266
12.2 在PHP中獲取日期和時間 267
12.2.1 調用getdate函式取得日期和時間信息 267
12.2.2 日期和時間格式化輸出 267
12.3 修改PHP的默認時區 269
12.4 使用微秒計算PHP腳本執行時間 269
12.5 日曆類 270
12.6 小結 273
第13章 檔案系統處理 275
13.1 檔案系統概述 275
13.1.1 檔案類型 275
13.1.2 檔案的屬性 276
13.2 的基本操作 278
13.2.1 解析路徑 279
13.2.2 遍歷 280
13.2.3 統計大小 281
13.2.4 建立和刪除 282
13.2.5 複製 282
13.3 檔案的基本操作 283
13.3.1 檔案的打開與關閉 283
13.3.2 寫入檔案 285
13.3.3 讀取檔案內容 285
13.3.4 訪問遠程檔案 287
13.3.5 移動檔案指針 288
13.3.6 檔案的鎖定機制 289
13.3.7 檔案的一些基本操作函式 291
13.4 檔案的上傳與下載 292
13.4.1 檔案上傳 292
13.4.2 處理多個檔案上傳 295
13.4.3 檔案下載 296
13.5 設計經典的檔案上傳類 297
13.5.1 需求分析 297
13.5.2 程式設計 297
13.5.3 檔案上傳類代碼實現 298
13.5.4 檔案上傳類的套用過程 301
13.6 小結 303
第14章 PHP動態圖像處理 304
14.1 PHP中GD庫的使用 304
14.1.1 畫布管理 305
14.1.2 設定顏色 306
14.1.3 生成圖像 306
14.1.4 繪製圖像 307
14.1.5 在圖像中繪製文字 309
14.2 設計經典的驗證碼類 311
14.2.1 設計驗證碼類 311
14.2.2 套用驗證碼類的實例對象 313
14.2.3 表單中套用驗證碼 313
14.2.4 實例演示 314
14.3 PHP圖片處理 314
14.3.1 圖片背景管理 314
14.3.2 圖片縮放 316
14.3.3 圖片裁剪 317
14.3.4 添加圖片水印 318
14.3.5 圖片旋轉和翻轉 319
14.4 設計經典的圖像處理類 321
14.4.1 需求分析 322
14.4.2 程式設計 322
14.4.3 圖像處理類代碼實現 323
14.4.4 圖像處理類的套用過程 327
14.5 小結 328
第15章 MySQL資料庫概述 329
15.1 資料庫的套用 329
15.1.1 資料庫在Web開發中的重要地位 329
15.1.2 為什麼PHP會選擇MySQL作為自己的黃金搭檔 330
15.1.3 PHP和MySQL的合作方式 330
15.1.4 結構化查詢語言SQL 331
15.2 MySQL資料庫的常見操作 331
15.2.1 MySQL資料庫的連線與關閉 331
15.2.2 創建新用戶並授權 332
15.2.3 創建資料庫 333
15.2.4 創建數據表 333
15.2.5 數據表內容的簡單管理 334
15.3 小結 335
第16章 MySQL數據表的設計 336
16.1 數據表(Table) 336
16.2 數據值和列類型 337
16.2.1 數值類的數據列類型 337
16.2.2 字元串類的數據列類型 338
16.2.3 日期和時間類的數據列類型 339
16.2.4 NULL值 339
16.2.5 類型轉換 339
16.3 數據欄位屬性 340
16.4 數據表對象管理 340
16.4.1 創建表(CREATE TABLE) 340
16.4.2 修改表(ALTER TABLE) 342
16.4.3 刪除表(DROP TABLE) 342
16.5 數據表的類型及存儲位置 343
16.5.1 MyISAM數據表 343
16.5.2 InnoDB數據表 343
16.5.3 選擇InnoDB還是MyISAM數據表類型 343
16.5.4 數據表的存儲位置 344
16.6 數據表的默認字元集 344
16.6.1 字元集 344
16.6.2 字元集支持原理 345
16.6.3 創建數據對象時修改字元集 345
16.7 創建索引 346
16.7.1 主鍵索引(PRIMARY KEY) 346
16.7.2 唯一索引(UNIQUE) 347
16.7.3 常規索引(INDEX) 347
16.7.4 全文索引(FULLTEXT) 348
16.8 資料庫的設計技巧 348
16.8.1 資料庫的設計要求 348
16.8.2 命名的技巧 348
16.8.3 資料庫具體設計工作中的技巧 349
16.9 小結 349
第17章 SQL語句設計 350
17.1 運算元據表中的數據記錄(DML) 350
17.1.1 使用INSERT語句向數據表中添加數據 350
17.1.2 使用UPDATE語句更新數據表中已存在的數據 351
17.1.3 使用DELETE語句刪除數據表中不需要的數據記錄 352
17.2 通過DQL命令查詢數據表中的數據 352
17.2.1 選擇特定的欄位 353
17.2.2 使用AS子句為欄位取別名 353
17.2.3 DISTINCT關鍵字的使用 353
17.2.4 在SELECT語句中使用表達式的列 354
17.2.5 使用WHERE子句按條件檢索 355
17.2.6 根據空值(NULL)確定檢索條件 356
17.2.7 使用BETWEEN AND進行範圍比較查詢 356
17.2.8 使用IN進行範圍比較查詢 356
17.2.9 使用LIKE進行模糊查詢 356
17.2.10 多表查詢(連線查詢) 357
17.2.11 嵌套查詢(子查詢) 359
17.2.12 使用ORDER BY對查詢結果排序 359
17.2.13 使用LIMIT限定結果行數 360
17.2.14 使用統計函式 360
17.2.15 使用GROUP BY對查詢結果分組 361
17.3 查詢最佳化 362
17.4 小結 363
第18章 資料庫抽象層PDO 364
18.1 PHP訪問MySQL資料庫伺服器的流程 364
18.2 PDO所支持的資料庫 365
18.3 PDO的安裝 366
18.4 創建PDO對象 367
18.4.1 以多種方式調用構造方法 368
18.4.2 PDO對象中的成員方法 370
18.5 使用PDO對象 370
18.5.1 調整PDO的行為屬性 370
18.5.2 PDO處理PHP程式和資料庫之間的數據類型轉換 371
18.5.3 PDO的錯誤處理模式 371
18.5.4 使用PDO執行SQL語句 372
18.6 PDO對預處理語句的支持 373
18.6.1 了解PDOStatement對象 374
18.6.2 準備語句 375
18.6.3 綁定參數 375
18.6.4 執行準備好的查詢 376
18.6.5 獲取數據 377
18.6.6 大數據對象的存取 380
18.7 PDO的事務處理 381
18.7.1 MySQL的事務處理 381
18.7.2 構建事務處理的應用程式 382
18.8 設計完美分頁類 383
18.8.1 需求分析 383
18.8.2 程式設計 383
18.8.3 完美分頁類的代碼實現 385
18.8.4 完美分頁類的套用過程 388
18.9 管理表books實例 390
18.9.1 需求分析 390
18.9.2 程式設計 391
18.10 小結 397
本章必須掌握的知識點 397
本章需要了解的內容 398
本章需要拓展的內容 398
第19章 MemCache管理與套用 399
19.1 MemCache概述 399
19.1.1 初識MemCache 399
19.1.2 MemCache在Web中的套用 400
19.2 memcached的安裝及管理 401
19.2.1 Linux下安裝MemCache軟體 401
19.2.2 Windows下安裝MemCache軟體 402
19.2.3 memcached伺服器的管理 403
19.3 使用Telnet作為memcached的客戶端管理 403
19.3.1 連線memcached伺服器 403
19.3.2 基本的memcached客戶端命令 403
19.3.3 查看當前memcached伺服器的運行狀態信息 404
19.3.4 數據管理指令 404
19.4 PHP的memcached管理接口 405
19.4.1 安裝PHP中的MemCache應用程式擴展接口 405
19.4.2 MemCache應用程式擴展接口 407
19.4.3 MemCache的實例套用 411
19.5 memcached伺服器的安全防護 412
19.6 小結 412
第20章 會話控制 414
20.1 為什麼要使用會話控制 414
20.2 會話跟蹤的方式 415
20.3 Cookie的套用 415
20.3.1 Cookie概述 415
20.3.2 向客戶端計算機中設定Cookie 416
20.3.3 在PHP腳本中讀取Cookie的資料內容 417
20.3.4 數組形態的Cookie套用 418
20.3.5 刪除Cookie 418
20.3.6 基於Cookie的用戶登錄模組 419
20.4 Session的套用 420
20.4.1 Session概述 420
20.4.2 配置Session 421
20.4.3 Session的聲明與使用 422
20.4.4 註冊一個會話變數和讀取Session 422
20.4.5 註銷變數與銷毀Session 423
20.4.6 Session的自動回收機制 424
20.4.7 傳遞Session ID 425
20.5 一個簡單的郵件系統實例 427
20.5.1 為郵件系統準備數據 427
20.5.2 編碼實現郵件系統 428
20.5.3 郵件系統執行說明 430
20.6 自定義Session處理方式 431
20.6.1 自定義Session的存儲機制 431
20.6.2 使用資料庫處理Session信息 433
20.6.3 使用memcached處理Session信息 436
20.7 小結 438
第21章 Redis的管理與套用 439
21.1 從認識Redis開始 439
21.1.1 Redis與其他資料庫和軟體的對比 439
21.1.2 Redis的特點 440
21.1.3 使用Redis的理由 440
21.2 Redis環境安裝及管理 441
21.2.1 安裝Redis 441
21.2.2 啟動Redis服務 442
21.2.3 Redis服務的性能測試 442
21.2.4 Redis服務的配置管理 443
21.3 Redis客戶端管理 444
21.3.1 命令行客戶端操作 445
21.3.2 安裝PHP的Redis擴展 445
21.4 Redis伺服器的基本操作 446
21.5 Redis的數據類型 447
21.6 PHP操作Redis的通用方法 448
21.7 Redis的字元串(String)類型 449
21.7.1 相關的命令操作 449
21.7.2 套用場景 450
21.7.3 使用Redis實現頁面快取 450
21.8 Redis的列表(List)類型 451
21.8.1 相關的命令操作 452
21.8.2 套用場景 453
21.8.3 “PHP+Redis”實現訊息佇列 453
21.9 Redis的集合(Set)類型 454
21.9.1 相關的命令操作 454
21.9.2 套用場景 456
21.9.3 “PHP+Redis”實現共同好友功能 456
21.10 Redis的Sorted Set有序集合類型 458
21.10.1 相關的命令操作 458
21.10.2 套用場景 459
21.10.3 “PHP+Redis”實現排行榜功能 460
21.11 Redis的哈希(hash)表類型 461
21.11.1 相關的命令操作 461
21.11.2 套用場景 463
21.11.3 使用Redis實現購物車功能 463
21.12 Redis訂閱發布系統 465
21.12.1 Redis 發布訂閱 465
21.12.2 Redis 發布訂閱操作 465
21.13 Redis的事務處理機制 466
21.14 小結 467
第22章 PHP的CURL功能擴展模組 468
22.1 CURL功能擴展模組介紹 468
22.2 PHP的CURL功能擴展模組基本用法 469
22.3 CURL相關的功能選項 470
22.4 通過CURL擴展獲取頁面信息 471
22.5 通過CURL擴展用POST方法傳送數據 473
22.6 通過CURL擴展上傳檔案 474
22.7 通過CURL模擬登錄並獲取數據 476
22.8 小結 477
第23章 自定義PHP接口規範 478
23.1 應用程式編程接口(API) 478
23.1.1 什麼是接口 478
23.1.2 了解實現接口的幾種方法 479
23.1.3 接口的套用和優勢 480
23.2 接口實現的基礎 482
23.2.1 實現接口的訪問流程 482
23.2.2 處理接口的返回值 483
23.2.3 在程式中訪問接口 484
23.3 接口的安全控制規範 486
23.3.1 API安全控制原則 487
23.3.2 API安全控制簡單實現步驟 487
23.4 API的設計原則和規範 491
23.4.1 什麼是RESTful風格的API 491
23.4.2 RESTful API應遵循的原則 491
23.5 創建RESTful規範 WebAPI框架 495
23.5.1 程式結構設計 495
23.5.2 架構詳解 496
23.5.3 WebAPI框架套用 502
23.5.4 客戶端訪問API 507
23.6 使用第三方接口服務實例 509
23.6.1 查找API 509
23.6.2 查看API文檔說明 509
23.6.3 獲取接口的key 510
23.6.4 使用 PHP 代碼請求接口 510
23.7 小結 511
第24章 PHP依賴管理工具Composer 513
24.1 認識Composer 513
24.1.1 什麼是Composer 513
24.1.2 Composer的代碼庫在哪裡 514
24.1.3 類庫的規範 515
24.2 Composer的安裝 515
24.2.1 安裝前的準備 515
24.2.2 安裝步驟 515
24.2.3 測試安裝環境 516
24.3 Composer常用檔案 517
24.3.1 vendor 517
24.3.2 composer.json 檔案 517
24.3.3 composer.lock 檔案 518
24.4 Composer常用命令 519
24.4.1 Composer基本命令的使用 519
24.4.2 Composer命令的運行流程 520
24.5 Composer套用案例 521
24.5.1 搜尋需要的庫 521
24.5.2 套用前準備 522
24.5.3 套用類庫 523
24.6 小結 525
第25章 MVC模式與PHP框架 526
25.1 MVC模式在Web中的套用 526
25.1.1 MVC模式的工作原理 526
25.1.2 MVC模式的優缺點 527
25.2 PHP開發框架 528
25.2.1 什麼是框架 528
25.2.2 為什麼要用框架 529
25.2.3 框架和MVC模式的關係 529
25.2.4 流行的PHP框架比較 530
25.3 劃分模組和操作 532
25.3.1 為項目劃分模組 532
25.3.2 為模組設定操作 532
25.4 小結 533
第26章 簡潔優雅的Laravel開發框架 534
26.1 認識Laravel框架 534
26.1.1 什麼是Laravel框架 534
26.1.2 Laravel框架的功能特點 534
26.1.3 Laravel框架的技術特點 535
26.1.4 Laravel框架套用的重要性 536
26.1.5 Laravel框架的發展歷程 536
26.2 安裝Laravel 538
26.2.1 安裝前準備 538
26.2.2 安裝Laravel 5.5 539
26.2.3 Laravel框架的結構 540
26.2.4 初始化Laravel框架安裝的一些設定 542
26.2.5 Laravel框架的Artisan工具 544
26.3 Laravel框架的工作流程 544
26.3.1 基本的工作流程 545
26.3.2 客戶端 546
26.3.3 主入口檔案 546
26.3.4 URL路由 546
26.3.5 控制器層(C) 547
26.3.6 中間件 548
26.3.7 資料庫操作層(M) 550
26.3.8 視圖層(V) 553
26.3.9 請求和回響 556
26.4 Laravel框架的核心服務容器 561
26.4.1 IoC 容器 561
26.4.2 了解Laravel框架的核心 562
26.4.3 註冊自己的服務到容器中 566
26.4.4 門面(Facades) 567
26.4.5 使用Composer為Laravel框架安裝擴展外掛程式包 569
26.5 基於Laravel框架的Web套用實例 571
26.5.1 用戶登錄模組 571
26.5.2 後台管理平台模組 573
26.5.3 文章模組 575
26.5.4 搭建前台模組 584
26.5.5 評論模組 586
26.6 基於Laravel 5.5的API套用實例 590
26.6.1 構建接口模組 590
26.6.2 封裝返回的統一訊息 591
26.6.3 為API增加版本 593
26.6.4 API token認證 593
26.6.5 編寫文檔和測試 596
26.7 小結 596
第27章 項目開發實戰——部落格系統 597
27.1 項目介紹 597
27.2 需求分析 597
27.2.1 系統目標 598
27.2.2 系統功能結構 598
27.2.3 許可權介紹 599
27.3 操作流程圖 599
27.3.1 部落格前台操作流程 599
27.3.2 部落格後台操作流程 600
27.4 原型圖 600
27.4.1 什麼是原型圖 600
27.4.2 原型圖的分類 600
27.4.3 項目部分原型頁面展示 601
27.5 部落格項目的模組介紹 604
27.5.1 前台模組 604
27.5.2 後台模組 604
27.5.3 前後台模組思維導圖 605
27.6 資料庫設計說明 606
27.6.1 概念結構設計 606
27.6.2 通過實體得到ER圖 606
27.6.3 邏輯結構設計 607
27.6.4 資料庫物理結構設計 608
27.7 程式設計說明 610
27.7.1 環境部署 611
27.7.2 許可權設定 611
27.7.3 項目結構 611
27.7.4 項目模組結構 612
27.7.5 項目程式結構 612
27.7.6 模型說明 616
27.7.7 自定義類及安裝的組件 617
27.8 項目安裝和部署 617
27.8.1 搭建虛擬主機 617
27.8.2 導入資料庫 618
27.8.3 項目套用 618
27.9 本章作業 619
27.9.1 任務一:修改網站配置模組 619
27.9.2 任務二:添加友情連結模組 622
27.10 小結 624
第28章 線上教育系統EDUPlayer 625
28.1 項目背景 625
28.2 需求分析 625
28.2.1 系統目標 625
28.2.2 前後端分離架構 626
28.2.3 系統功能結構 626
28.2.4 許可權介紹 626
28.3 操作流程 627
28.3.1 前台操作流程 628
28.3.2 後台操作流程 628
28.4 原型圖 629
28.5 系統模組介紹 631
28.5.1 前台模組 631
28.5.2 後台模組 632
28.5.3 前台模組思維導圖 632
28.5.4 後台模組思維導圖 632
28.6 資料庫設計說明 633
28.6.1 概念結構設計 634
28.6.2 通過實體獲取ER圖 634
28.6.3 Laravel 框架的數據表遷移工具 635
28.6.4 數據表詳解 635
28.7 項目安裝 656
28.7.1 環境依賴 656
28.7.2 環境安裝之 nginx 657
28.7.3 環境安裝之 PHP 657
28.7.4 環境安裝之MySQL 658
28.7.5 環境安裝之 Redis 659
28.7.6 環境安裝之Git 659
28.7.7 環境安裝之 Composer 659
28.7.8 項目下載及配置 660
28.7.9 虛擬主機配置 661
28.7.10 開啟定時任務 662
28.7.11 Redis佇列實現 662
28.7.12 安裝成功 663
28.8 結構 663
28.8.1 根 663
28.8.2 app664
28.9 依賴組件 665
28.10 二次開發注意事項 666
28.10.1 搜尋參數和排序參數約束 666
28.10.2 關聯載入約束 667
28.10.3 許可權驗證約束 668
28.10.4 開發新業務示例 668
28.11 小結 669
附錄 671
附錄A 編碼規範 672
附錄B PHP項目的安全和最佳化 683
附錄C PHP 5.3~PHP 5.6中的新特性 695,
第1章 LAMP網站構建 1
1.1 Web概述 1
1.1.1 Web套用的優勢 2
1.1.2 Web 2.0時代的網際網路 3
1.1.3 Web開發標準 4
1.1.4 認識腳本語言 5
1.2 動態網站開發所需的Web構件 5
1.2.1 客戶端瀏覽器 6
1.2.2 超文本標記語言(HTML) 7
1.2.3 層疊樣式表(CSS) 8
1.2.4 客戶端腳本程式語言JavaScript 8
1.2.5 Web伺服器 9
1.2.6 伺服器端程式語言 10
1.2.7 資料庫管理系統 10
1.3 幾種主流的Web應用程式平台 11
1.3.1 Web應用程式開發平台對比分析 11
1.3.2 動態網站開發平台技術比較 12
1.4 HTTP協定與Web的關係 13
1.4.1 HTTP協定概述 13
1.4.2 HTTP協定結構 14
1.4.3 HTTP請求訊息 15
1.4.4 HTTP回響訊息 15
1.4.5 HTTPS是什麼 16
1.4.6 URL概述 16
1.5 Web的工作原理 17
1.5.1 情景1:不帶應用程式伺服器和資料庫的伺服器 17
1.5.2 情景2:帶應用程式伺服器的Web伺服器 18
1.5.3 情景3:瀏覽器訪問伺服器端的資料庫 19
1.6 LAMP網站開發組合概述 19
1.6.1 Linux作業系統 20
1.6.2 Web伺服器Apache 20
1.6.3 MySQL資料庫管理系統 20
1.6.4 PHP後台腳本程式語言 21
1.6.5 LAMP的發展趨勢 21
1.6.6 Web的未來發展 21
1.7 小結 22
第2章 PHP的套用與發展 23
2.1 PHP是什麼 23
2.1.1 從認識PHP開始 23
2.1.2 PHP都能做什麼 24
2.2 PHP的套用 26
2.2.1 開發網站和移動網站的套用 26
2.2.2 在企業內部信息化系統中的套用 27
2.2.3 在App接口開發方面的套用 27
2.2.4 對微信公眾平台二次開發的套用 28
2.2.5 微信小程式開發套用 29
2.2.6 PHP在其他方面的套用 29
2.3 PHP的開發優勢 29
2.3.1 簡單易學 30
2.3.2 開發效率高 30
2.3.3 開發成本低 30
2.3.4 程式執行效率高 30
2.3.5 安全性良好 31
2.3.6 功能強大 31
2.3.7 可選擇性多 31
2.4 PHP的發展 31
2.4.1 PHP的誕生 31
2.4.2 PHP的疊代過程 32
2.4.3 PHP的現在 33
2.4.4 PHP的未來 33
2.5 如何學習PHP 34
2.5.1 確定學習的目標 34
2.5.2 PHP學習線路圖 34
2.5.3 堅持動手實驗 36
2.5.4 Bug解決之道 36
2.5.5 看教學視頻,讓學習變得簡單 37
2.5.6 優秀的Web程式設計師是怎樣練成的 37
2.6 小結 39
第3章 從搭建你的PHP開發環境開始 40
3.1 幾種常見的PHP環境安裝方式 40
3.1.1 在Linux系統上以原始碼包的方式安裝環境 40
3.1.2 在Windows系統上安裝Web工作環境 41
3.1.3 搭建學習型的PHP工作環境 41
3.2 環境安裝對作業系統的選擇 41
3.2.1 選擇網站運營的作業系統 41
3.2.2 選擇網站開發的作業系統 42
3.3 安裝集成PHP開發環境 42
3.3.1 安裝前準備 42
3.3.2 安裝步驟 42
3.3.3 環境測試 43
3.4 集成環境中各伺服器的配置 45
3.4.1 Apache配置 46
3.4.2 改變文檔根www的位置 46
3.4.3 修改PHP的默認配置 47
3.4.4 phpMyAdmin的套用 47
3.4.5 修改MySQL默認的訪問許可權 48
3.5 小結 49
第4章 PHP的基本語法 50
4.1 第一個PHP腳本程式 50
4.2 PHP語言標記 52
4.2.1 將PHP代碼嵌入HTML中的位置 53
4.2.2 解讀開始和結束標記 53
4.3 指令分隔設定“分號” 54
4.4 程式注釋 54
4.5 在程式中使用空白的處理 56
4.6 變數 57
4.6.1 變數的聲明 57
4.6.2 變數的命名 58
4.6.3 可變變數 59
4.6.4 變數的引用賦值 59
4.7 變數的類型 60
4.7.1 類型介紹 60
4.7.2 布爾型(boolean) 61
4.7.3 整型(integer) 62
4.7.4 浮點型(float或double) 63
4.7.5 字元串(string) 63
4.7.6 數組(array) 65
4.7.7 對象(object) 66
4.7.8 資源類型(resource) 66
4.7.9 NULL類型 67
4.7.10 偽類型介紹 67
4.8 數據類型之間相互轉換 67
4.8.1 自動類型轉換 68
4.8.2 強制類型轉換 68
4.8.3 類型轉換細節 69
4.8.4 變數類型的測試函式 69
4.9 常量 70
4.9.1 常量的定義和使用 70
4.9.2 常量和變數 71
4.9.3 PHP新版本可以使用表達式定義常量 72
4.9.4 define和const的區別 72
4.9.5 系統中的預定義常量 72
4.9.6 PHP中的魔術常量 73
4.10 PHP中的運算符 74
4.10.1 算術運算符 74
4.10.2 字元串運算符 76
4.10.3 賦值運算符 76
4.10.4 比較運算符 77
4.10.5 邏輯運算符 79
4.10.6 位運算符 80
4.10.7 其他運算符 82
4.10.8 運算符的優先權 83
4.11 表達式 84
4.12 容易混淆的特殊值 84
4.13 小結 85
第5章 PHP的流程控制結構 86
5.1 分支結構 86
5.1.1 單一條件分支結構(if) 86
5.1.2 雙向條件分支結構(else子句) 87
5.1.3 多向條件分支結構(elseif子句) 88
5.1.4 多向條件分支結構(switch語句) 89
5.1.5 巢狀條件分支結構 91
5.1.6 條件分支結構實例套用(簡單計算器) 92
5.2 循環結構 93
5.2.1 while語句 94
5.2.2 do…while循環 95
5.2.3 for語句 96
5.3 特殊的流程控制語句 99
5.3.1 break語句 99
5.3.2 continue語句 99
5.3.3 exit語句 100
5.4 PHP的新版特性——goto語句 100
5.5 小結 102
第6章 PHP的函式套用 103
6.1 函式的定義 103
6.2 自定義函式 104
6.2.1 函式的聲明 104
6.2.2 函式的調用 105
6.2.3 函式的參數 106
6.2.4 函式的返回值 107
6.2.5 標量類型聲明 109
6.3 函式的工作原理和結構化編程 111
6.4 PHP變數的範圍 111
6.4.1 局部變數 111
6.4.2 全局變數 112
6.4.3 靜態變數 113
6.5 聲明及套用各種形式的PHP函式 114
6.5.1 常規參數的函式 115
6.5.2 偽類型參數的函式 115
6.5.3 引用參數的函式 115
6.5.4 默認參數的函式 116
6.5.5 可變個數參數的函式 118
6.5.6 回調函式 119
6.6 遞歸函式 122
6.7 使用自定義函式館 123
6.8 PHP匿名函式和閉包 124
6.9 小結 125
第7章 PHP中的數組與數據結構 126
7.1 數組的分類 126
7.2 數組的定義 127
7.2.1 以直接賦值的方式聲明數組 128
7.2.2 使用array語言結構新建數組 129
7.2.3 數組簡寫語法 130
7.2.4 多維數組的聲明 130
7.3 數組的遍歷 132
7.3.1 使用for語句循環遍歷數組 132
7.3.2 聯合使用list( )、each( )和while循環遍歷數組 134
7.3.3 使用foreach語句遍歷數組 135
7.3.4 使用數組的內部指針控制函式遍歷數組 138
7.4 預定義數組 139
7.4.1 伺服器變數:$_SERVER 140
7.4.2 環境變數:$_ENV 140
7.4.3 URL GET變數:$_GET 141
7.4.4 HTTP POST變數:$_POST 141
7.4.5 request變數:$_REQUEST 142
7.4.6 HTTP檔案上傳變數:$_FILES 142
7.4.7 HTTP Cookies:$_COOKIE 142
7.4.8 Session變數:$_SESSION 143
7.4.9 Global變數:$GLOBALS 143
7.5 數組的相關處理函式 143
7.5.1 數組的鍵/值操作函式 143
7.5.2 統計數組元素的個數和唯一性 146
7.5.3 使用回調函式處理數組的函式 147
7.5.4 數組的排序函式 150
7.5.5 拆分、合併、分解和接合數組 153
7.5.6 數組與數據結構 155
7.5.7 其他有用的數組處理函式 157
7.6 操作PHP數組需要注意的一些細節 158
7.6.1 數組運算符號 158
7.6.2 刪除數組中的元素 159
7.6.3 關於數組下標的注意事項 159
7.7 小結 160
第8章 PHP面向對象的程式設計 161
8.1 面向對象概述 161
8.1.1 類和對象之間的關係 161
8.1.2 面向對象的程式設計 162
8.2 如何抽象一個類 163
8.2.1 類的聲明 163
8.2.2 成員屬性 164
8.2.3 成員方法 164
8.3 通過類實例化對象 166
8.3.1 實例化對象 166
8.3.2 對象類型在記憶體中的分配 167
8.3.3 對象中成員的訪問 168
8.3.4 特殊的對象引用“$this” 169
8.3.5 構造方法與析構方法 171
8.4 封裝性 173
8.4.1 設定私有成員 174
8.4.2 私有成員的訪問 175
8.4.3 _ _set、_ _get、_ _isset和_ _unset4個方法 176
8.5 繼承性 180
8.5.1 類繼承的套用 181
8.5.2 訪問類型控制 182
8.5.3 子類中重載父類的方法 184
8.6 常見的關鍵字和魔術方法 186
8.6.1 final關鍵字的套用 186
8.6.2 static關鍵字的使用 187
8.6.3 單態設計模式 188
8.6.4 const關鍵字 189
8.6.5 instanceof關鍵字 189
8.6.6 克隆對象 190
8.6.7 類中通用的方法_ _toString191
8.6.8 PHP 7新加入的方法_ _ debugInfo191
8.6.9 _ _call方法的套用 192
8.6.10 自動載入類 194
8.6.11 對象串列化 194
8.7 抽象類與接口 197
8.7.1 抽象類 197
8.7.2 接口技術 198
8.8 多態性的套用 200
8.9 PHP 5.4的Trait特性 201
8.9.1 Trait的聲明 201
8.9.2 Trait的基本使用 202
8.10 PHP 7的匿名類 204
8.10.1 匿名類的聲明 204
8.10.2 匿名類的套用 205
8.11 PHP 5.3新增加的命名空間 206
8.11.1 命名空間的基本套用 206
8.11.2 命名空間的子空間和公共空間 208
8.11.3 命名空間中的名稱和術語 209
8.11.4 別名和導入 209
8.12 面向對象版圖形計算器 211
8.12.1 需求分析 211
8.12.2 功能設計及實現 212
8.12.3 類的組織架構 216
8.13 小結 217
第9章 字元串處理 219
9.1 字元串的處理介紹 219
9.1.1 字元串的處理方式 219
9.1.2 字元串類型的特點 219
9.1.3 雙引號中的變數解析總結 220
9.2 常用的字元串輸出函式 221
9.3 常用的字元串格式化函式 223
9.3.1 去除空格和字元串填補函式 224
9.3.2 字元串大小寫的轉換 225
9.3.3 和HTML標籤相關的字元串格式化 225
9.3.4 其他字元串格式化函式 228
9.4 字元串比較函式 229
9.4.1 按位元組順序進行字元串比較 230
9.4.2 按自然排序進行字元串比較 230
9.5 小結 231
第10章 正則表達式 232
10.1 正則表達式簡介 232
10.2 正則表達式的語法規則 233
10.2.1 定界符 233
10.2.2 原子 234
10.2.3 元字元 235
10.2.4 模式修正符 238
10.3 與Perl兼容的正則表達式函式 238
10.3.1 字元串的匹配與查找 239
10.3.2 字元串的替換 242
10.3.3 字元串的分割和連線 246
10.4 文章發布操作示例 248
10.5 小結 252
第11章 PHP的錯誤和異常處理 253
11.1 錯誤處理 253
11.1.1 錯誤報告級別 253
11.1.2 調整錯誤報告級別 254
11.1.3 使用trigger_error函式代替die函式 256
11.1.4 自定義錯誤處理 256
11.1.5 寫錯誤日誌 257
11.2 異常處理 259
11.2.1 異常處理實現 260
11.2.2 擴展PHP內置的異常處理類 260
11.2.3 捕獲多個異常 262
11.2.4 PHP異常處理新特性 263
11.3 小結 264
第12章 PHP的日期和時間 265
12.1 UNIX時間戳 265
12.1.1 將日期和時間轉變成UNIX時間戳 265
12.1.2 日期的計算 266
12.2 在PHP中獲取日期和時間 267
12.2.1 調用getdate函式取得日期和時間信息 267
12.2.2 日期和時間格式化輸出 267
12.3 修改PHP的默認時區 269
12.4 使用微秒計算PHP腳本執行時間 269
12.5 日曆類 270
12.6 小結 273
第13章 檔案系統處理 275
13.1 檔案系統概述 275
13.1.1 檔案類型 275
13.1.2 檔案的屬性 276
13.2 的基本操作 278
13.2.1 解析路徑 279
13.2.2 遍歷 280
13.2.3 統計大小 281
13.2.4 建立和刪除 282
13.2.5 複製 282
13.3 檔案的基本操作 283
13.3.1 檔案的打開與關閉 283
13.3.2 寫入檔案 285
13.3.3 讀取檔案內容 285
13.3.4 訪問遠程檔案 287
13.3.5 移動檔案指針 288
13.3.6 檔案的鎖定機制 289
13.3.7 檔案的一些基本操作函式 291
13.4 檔案的上傳與下載 292
13.4.1 檔案上傳 292
13.4.2 處理多個檔案上傳 295
13.4.3 檔案下載 296
13.5 設計經典的檔案上傳類 297
13.5.1 需求分析 297
13.5.2 程式設計 297
13.5.3 檔案上傳類代碼實現 298
13.5.4 檔案上傳類的套用過程 301
13.6 小結 303
第14章 PHP動態圖像處理 304
14.1 PHP中GD庫的使用 304
14.1.1 畫布管理 305
14.1.2 設定顏色 306
14.1.3 生成圖像 306
14.1.4 繪製圖像 307
14.1.5 在圖像中繪製文字 309
14.2 設計經典的驗證碼類 311
14.2.1 設計驗證碼類 311
14.2.2 套用驗證碼類的實例對象 313
14.2.3 表單中套用驗證碼 313
14.2.4 實例演示 314
14.3 PHP圖片處理 314
14.3.1 圖片背景管理 314
14.3.2 圖片縮放 316
14.3.3 圖片裁剪 317
14.3.4 添加圖片水印 318
14.3.5 圖片旋轉和翻轉 319
14.4 設計經典的圖像處理類 321
14.4.1 需求分析 322
14.4.2 程式設計 322
14.4.3 圖像處理類代碼實現 323
14.4.4 圖像處理類的套用過程 327
14.5 小結 328
第15章 MySQL資料庫概述 329
15.1 資料庫的套用 329
15.1.1 資料庫在Web開發中的重要地位 329
15.1.2 為什麼PHP會選擇MySQL作為自己的黃金搭檔 330
15.1.3 PHP和MySQL的合作方式 330
15.1.4 結構化查詢語言SQL 331
15.2 MySQL資料庫的常見操作 331
15.2.1 MySQL資料庫的連線與關閉 331
15.2.2 創建新用戶並授權 332
15.2.3 創建資料庫 333
15.2.4 創建數據表 333
15.2.5 數據表內容的簡單管理 334
15.3 小結 335
第16章 MySQL數據表的設計 336
16.1 數據表(Table) 336
16.2 數據值和列類型 337
16.2.1 數值類的數據列類型 337
16.2.2 字元串類的數據列類型 338
16.2.3 日期和時間類的數據列類型 339
16.2.4 NULL值 339
16.2.5 類型轉換 339
16.3 數據欄位屬性 340
16.4 數據表對象管理 340
16.4.1 創建表(CREATE TABLE) 340
16.4.2 修改表(ALTER TABLE) 342
16.4.3 刪除表(DROP TABLE) 342
16.5 數據表的類型及存儲位置 343
16.5.1 MyISAM數據表 343
16.5.2 InnoDB數據表 343
16.5.3 選擇InnoDB還是MyISAM數據表類型 343
16.5.4 數據表的存儲位置 344
16.6 數據表的默認字元集 344
16.6.1 字元集 344
16.6.2 字元集支持原理 345
16.6.3 創建數據對象時修改字元集 345
16.7 創建索引 346
16.7.1 主鍵索引(PRIMARY KEY) 346
16.7.2 唯一索引(UNIQUE) 347
16.7.3 常規索引(INDEX) 347
16.7.4 全文索引(FULLTEXT) 348
16.8 資料庫的設計技巧 348
16.8.1 資料庫的設計要求 348
16.8.2 命名的技巧 348
16.8.3 資料庫具體設計工作中的技巧 349
16.9 小結 349
第17章 SQL語句設計 350
17.1 運算元據表中的數據記錄(DML) 350
17.1.1 使用INSERT語句向數據表中添加數據 350
17.1.2 使用UPDATE語句更新數據表中已存在的數據 351
17.1.3 使用DELETE語句刪除數據表中不需要的數據記錄 352
17.2 通過DQL命令查詢數據表中的數據 352
17.2.1 選擇特定的欄位 353
17.2.2 使用AS子句為欄位取別名 353
17.2.3 DISTINCT關鍵字的使用 353
17.2.4 在SELECT語句中使用表達式的列 354
17.2.5 使用WHERE子句按條件檢索 355
17.2.6 根據空值(NULL)確定檢索條件 356
17.2.7 使用BETWEEN AND進行範圍比較查詢 356
17.2.8 使用IN進行範圍比較查詢 356
17.2.9 使用LIKE進行模糊查詢 356
17.2.10 多表查詢(連線查詢) 357
17.2.11 嵌套查詢(子查詢) 359
17.2.12 使用ORDER BY對查詢結果排序 359
17.2.13 使用LIMIT限定結果行數 360
17.2.14 使用統計函式 360
17.2.15 使用GROUP BY對查詢結果分組 361
17.3 查詢最佳化 362
17.4 小結 363
第18章 資料庫抽象層PDO 364
18.1 PHP訪問MySQL資料庫伺服器的流程 364
18.2 PDO所支持的資料庫 365
18.3 PDO的安裝 366
18.4 創建PDO對象 367
18.4.1 以多種方式調用構造方法 368
18.4.2 PDO對象中的成員方法 370
18.5 使用PDO對象 370
18.5.1 調整PDO的行為屬性 370
18.5.2 PDO處理PHP程式和資料庫之間的數據類型轉換 371
18.5.3 PDO的錯誤處理模式 371
18.5.4 使用PDO執行SQL語句 372
18.6 PDO對預處理語句的支持 373
18.6.1 了解PDOStatement對象 374
18.6.2 準備語句 375
18.6.3 綁定參數 375
18.6.4 執行準備好的查詢 376
18.6.5 獲取數據 377
18.6.6 大數據對象的存取 380
18.7 PDO的事務處理 381
18.7.1 MySQL的事務處理 381
18.7.2 構建事務處理的應用程式 382
18.8 設計完美分頁類 383
18.8.1 需求分析 383
18.8.2 程式設計 383
18.8.3 完美分頁類的代碼實現 385
18.8.4 完美分頁類的套用過程 388
18.9 管理表books實例 390
18.9.1 需求分析 390
18.9.2 程式設計 391
18.10 小結 397
本章必須掌握的知識點 397
本章需要了解的內容 398
本章需要拓展的內容 398
第19章 MemCache管理與套用 399
19.1 MemCache概述 399
19.1.1 初識MemCache 399
19.1.2 MemCache在Web中的套用 400
19.2 memcached的安裝及管理 401
19.2.1 Linux下安裝MemCache軟體 401
19.2.2 Windows下安裝MemCache軟體 402
19.2.3 memcached伺服器的管理 403
19.3 使用Telnet作為memcached的客戶端管理 403
19.3.1 連線memcached伺服器 403
19.3.2 基本的memcached客戶端命令 403
19.3.3 查看當前memcached伺服器的運行狀態信息 404
19.3.4 數據管理指令 404
19.4 PHP的memcached管理接口 405
19.4.1 安裝PHP中的MemCache應用程式擴展接口 405
19.4.2 MemCache應用程式擴展接口 407
19.4.3 MemCache的實例套用 411
19.5 memcached伺服器的安全防護 412
19.6 小結 412
第20章 會話控制 414
20.1 為什麼要使用會話控制 414
20.2 會話跟蹤的方式 415
20.3 Cookie的套用 415
20.3.1 Cookie概述 415
20.3.2 向客戶端計算機中設定Cookie 416
20.3.3 在PHP腳本中讀取Cookie的資料內容 417
20.3.4 數組形態的Cookie套用 418
20.3.5 刪除Cookie 418
20.3.6 基於Cookie的用戶登錄模組 419
20.4 Session的套用 420
20.4.1 Session概述 420
20.4.2 配置Session 421
20.4.3 Session的聲明與使用 422
20.4.4 註冊一個會話變數和讀取Session 422
20.4.5 註銷變數與銷毀Session 423
20.4.6 Session的自動回收機制 424
20.4.7 傳遞Session ID 425
20.5 一個簡單的郵件系統實例 427
20.5.1 為郵件系統準備數據 427
20.5.2 編碼實現郵件系統 428
20.5.3 郵件系統執行說明 430
20.6 自定義Session處理方式 431
20.6.1 自定義Session的存儲機制 431
20.6.2 使用資料庫處理Session信息 433
20.6.3 使用memcached處理Session信息 436
20.7 小結 438
第21章 Redis的管理與套用 439
21.1 從認識Redis開始 439
21.1.1 Redis與其他資料庫和軟體的對比 439
21.1.2 Redis的特點 440
21.1.3 使用Redis的理由 440
21.2 Redis環境安裝及管理 441
21.2.1 安裝Redis 441
21.2.2 啟動Redis服務 442
21.2.3 Redis服務的性能測試 442
21.2.4 Redis服務的配置管理 443
21.3 Redis客戶端管理 444
21.3.1 命令行客戶端操作 445
21.3.2 安裝PHP的Redis擴展 445
21.4 Redis伺服器的基本操作 446
21.5 Redis的數據類型 447
21.6 PHP操作Redis的通用方法 448
21.7 Redis的字元串(String)類型 449
21.7.1 相關的命令操作 449
21.7.2 套用場景 450
21.7.3 使用Redis實現頁面快取 450
21.8 Redis的列表(List)類型 451
21.8.1 相關的命令操作 452
21.8.2 套用場景 453
21.8.3 “PHP+Redis”實現訊息佇列 453
21.9 Redis的集合(Set)類型 454
21.9.1 相關的命令操作 454
21.9.2 套用場景 456
21.9.3 “PHP+Redis”實現共同好友功能 456
21.10 Redis的Sorted Set有序集合類型 458
21.10.1 相關的命令操作 458
21.10.2 套用場景 459
21.10.3 “PHP+Redis”實現排行榜功能 460
21.11 Redis的哈希(hash)表類型 461
21.11.1 相關的命令操作 461
21.11.2 套用場景 463
21.11.3 使用Redis實現購物車功能 463
21.12 Redis訂閱發布系統 465
21.12.1 Redis 發布訂閱 465
21.12.2 Redis 發布訂閱操作 465
21.13 Redis的事務處理機制 466
21.14 小結 467
第22章 PHP的CURL功能擴展模組 468
22.1 CURL功能擴展模組介紹 468
22.2 PHP的CURL功能擴展模組基本用法 469
22.3 CURL相關的功能選項 470
22.4 通過CURL擴展獲取頁面信息 471
22.5 通過CURL擴展用POST方法傳送數據 473
22.6 通過CURL擴展上傳檔案 474
22.7 通過CURL模擬登錄並獲取數據 476
22.8 小結 477
第23章 自定義PHP接口規範 478
23.1 應用程式編程接口(API) 478
23.1.1 什麼是接口 478
23.1.2 了解實現接口的幾種方法 479
23.1.3 接口的套用和優勢 480
23.2 接口實現的基礎 482
23.2.1 實現接口的訪問流程 482
23.2.2 處理接口的返回值 483
23.2.3 在程式中訪問接口 484
23.3 接口的安全控制規範 486
23.3.1 API安全控制原則 487
23.3.2 API安全控制簡單實現步驟 487
23.4 API的設計原則和規範 491
23.4.1 什麼是RESTful風格的API 491
23.4.2 RESTful API應遵循的原則 491
23.5 創建RESTful規範 WebAPI框架 495
23.5.1 程式結構設計 495
23.5.2 架構詳解 496
23.5.3 WebAPI框架套用 502
23.5.4 客戶端訪問API 507
23.6 使用第三方接口服務實例 509
23.6.1 查找API 509
23.6.2 查看API文檔說明 509
23.6.3 獲取接口的key 510
23.6.4 使用 PHP 代碼請求接口 510
23.7 小結 511
第24章 PHP依賴管理工具Composer 513
24.1 認識Composer 513
24.1.1 什麼是Composer 513
24.1.2 Composer的代碼庫在哪裡 514
24.1.3 類庫的規範 515
24.2 Composer的安裝 515
24.2.1 安裝前的準備 515
24.2.2 安裝步驟 515
24.2.3 測試安裝環境 516
24.3 Composer常用檔案 517
24.3.1 vendor 517
24.3.2 composer.json 檔案 517
24.3.3 composer.lock 檔案 518
24.4 Composer常用命令 519
24.4.1 Composer基本命令的使用 519
24.4.2 Composer命令的運行流程 520
24.5 Composer套用案例 521
24.5.1 搜尋需要的庫 521
24.5.2 套用前準備 522
24.5.3 套用類庫 523
24.6 小結 525
第25章 MVC模式與PHP框架 526
25.1 MVC模式在Web中的套用 526
25.1.1 MVC模式的工作原理 526
25.1.2 MVC模式的優缺點 527
25.2 PHP開發框架 528
25.2.1 什麼是框架 528
25.2.2 為什麼要用框架 529
25.2.3 框架和MVC模式的關係 529
25.2.4 流行的PHP框架比較 530
25.3 劃分模組和操作 532
25.3.1 為項目劃分模組 532
25.3.2 為模組設定操作 532
25.4 小結 533
第26章 簡潔優雅的Laravel開發框架 534
26.1 認識Laravel框架 534
26.1.1 什麼是Laravel框架 534
26.1.2 Laravel框架的功能特點 534
26.1.3 Laravel框架的技術特點 535
26.1.4 Laravel框架套用的重要性 536
26.1.5 Laravel框架的發展歷程 536
26.2 安裝Laravel 538
26.2.1 安裝前準備 538
26.2.2 安裝Laravel 5.5 539
26.2.3 Laravel框架的結構 540
26.2.4 初始化Laravel框架安裝的一些設定 542
26.2.5 Laravel框架的Artisan工具 544
26.3 Laravel框架的工作流程 544
26.3.1 基本的工作流程 545
26.3.2 客戶端 546
26.3.3 主入口檔案 546
26.3.4 URL路由 546
26.3.5 控制器層(C) 547
26.3.6 中間件 548
26.3.7 資料庫操作層(M) 550
26.3.8 視圖層(V) 553
26.3.9 請求和回響 556
26.4 Laravel框架的核心服務容器 561
26.4.1 IoC 容器 561
26.4.2 了解Laravel框架的核心 562
26.4.3 註冊自己的服務到容器中 566
26.4.4 門面(Facades) 567
26.4.5 使用Composer為Laravel框架安裝擴展外掛程式包 569
26.5 基於Laravel框架的Web套用實例 571
26.5.1 用戶登錄模組 571
26.5.2 後台管理平台模組 573
26.5.3 文章模組 575
26.5.4 搭建前台模組 584
26.5.5 評論模組 586
26.6 基於Laravel 5.5的API套用實例 590
26.6.1 構建接口模組 590
26.6.2 封裝返回的統一訊息 591
26.6.3 為API增加版本 593
26.6.4 API token認證 593
26.6.5 編寫文檔和測試 596
26.7 小結 596
第27章 項目開發實戰——部落格系統 597
27.1 項目介紹 597
27.2 需求分析 597
27.2.1 系統目標 598
27.2.2 系統功能結構 598
27.2.3 許可權介紹 599
27.3 操作流程圖 599
27.3.1 部落格前台操作流程 599
27.3.2 部落格後台操作流程 600
27.4 原型圖 600
27.4.1 什麼是原型圖 600
27.4.2 原型圖的分類 600
27.4.3 項目部分原型頁面展示 601
27.5 部落格項目的模組介紹 604
27.5.1 前台模組 604
27.5.2 後台模組 604
27.5.3 前後台模組思維導圖 605
27.6 資料庫設計說明 606
27.6.1 概念結構設計 606
27.6.2 通過實體得到ER圖 606
27.6.3 邏輯結構設計 607
27.6.4 資料庫物理結構設計 608
27.7 程式設計說明 610
27.7.1 環境部署 611
27.7.2 許可權設定 611
27.7.3 項目結構 611
27.7.4 項目模組結構 612
27.7.5 項目程式結構 612
27.7.6 模型說明 616
27.7.7 自定義類及安裝的組件 617
27.8 項目安裝和部署 617
27.8.1 搭建虛擬主機 617
27.8.2 導入資料庫 618
27.8.3 項目套用 618
27.9 本章作業 619
27.9.1 任務一:修改網站配置模組 619
27.9.2 任務二:添加友情連結模組 622
27.10 小結 624
第28章 線上教育系統EDUPlayer 625
28.1 項目背景 625
28.2 需求分析 625
28.2.1 系統目標 625
28.2.2 前後端分離架構 626
28.2.3 系統功能結構 626
28.2.4 許可權介紹 626
28.3 操作流程 627
28.3.1 前台操作流程 628
28.3.2 後台操作流程 628
28.4 原型圖 629
28.5 系統模組介紹 631
28.5.1 前台模組 631
28.5.2 後台模組 632
28.5.3 前台模組思維導圖 632
28.5.4 後台模組思維導圖 632
28.6 資料庫設計說明 633
28.6.1 概念結構設計 634
28.6.2 通過實體獲取ER圖 634
28.6.3 Laravel 框架的數據表遷移工具 635
28.6.4 數據表詳解 635
28.7 項目安裝 656
28.7.1 環境依賴 656
28.7.2 環境安裝之 nginx 657
28.7.3 環境安裝之 PHP 657
28.7.4 環境安裝之MySQL 658
28.7.5 環境安裝之 Redis 659
28.7.6 環境安裝之Git 659
28.7.7 環境安裝之 Composer 659
28.7.8 項目下載及配置 660
28.7.9 虛擬主機配置 661
28.7.10 開啟定時任務 662
28.7.11 Redis佇列實現 662
28.7.12 安裝成功 663
28.8 結構 663
28.8.1 根 663
28.8.2 app664
28.9 依賴組件 665
28.10 二次開發注意事項 666
28.10.1 搜尋參數和排序參數約束 666
28.10.2 關聯載入約束 667
28.10.3 許可權驗證約束 668
28.10.4 開發新業務示例 668
28.11 小結 669
附錄 671
附錄A 編碼規範 672
附錄B PHP項目的安全和最佳化 683
附錄C PHP 5.3~PHP 5.6中的新特性 695