第1章 PHP基本語法
1.1 PHP的優(yōu)勢與特點 1
1.2 PHP腳本運行方式 2
1.3 集成化WAMP服務器的配置 3
1.3.1 WAMP環(huán)境配置 4
1.3.2 客戶端瀏覽器與服務器的互動過程 .8
1.3.3 Apache、MySQL、PHP三者之間的關系 10
1.4 PHP語法所涉及的標記 10
1.4.1 PHP的標記風格 .10
1.4.2 PHP與HTML混編 .12
1.4.3 PHP腳本中的分號(“;”) 14
1.4.4 空格、換行符及跳格 .14
1.4.5 PHP中的注釋規(guī)則及規(guī)范 .15
1.5 PHP數據類型 16
1.5.1 基本數據類型 .16
1.5.2 復合數據類型 .21
1.5.3 特殊數據類型 .23
【示例1-1】判斷變量是否為null空值并進一步處理 24
1.6 PHP數據類型轉換 24
1.6.1 基本轉換(自動轉換) .25
1.6.2 強制轉換 .25
【示例1-2】 將字符串強制轉換為float單精度、int整型、bool布爾、數組
以及對象等數據類型 .25
1.7 PHP常量與變量 27
1.7.1 定義常量 .27
【示例1-3】使用Define()函數定義常量DEFAULT_PATH .27
1.7.2 系統(tǒng)預定義常量 .28
1.7.3 定義變量 .28
【示例1-4】傳值賦值與引用賦值(傳址賦值)方式的差異 .29
1.7.4 變量作用域 .30
1.7.5 可變變量(嵌套變量) .31
1.8 PHP 運算符 33
1.8.1 賦值運算符 .33
1.8.2 算術運算符 .33
1.8.3 比較運算符 .34
1.8.4 邏輯運算符 .35
1.8.5 位運算符 .35
1.8.6 字符串連接運算符 .36
1.8.7 錯誤控制運算符 .36
1.8.8 三元運算符 36
1.8.9 運算符的優(yōu)先級 .37
1.9 PHP 流程控制語句 37
1.9.1 條件控制語句 .38
1.9.2 循環(huán)控制語句 .40
1.9.3 跳轉控制語句 .41
1.10 PHP 變量的應用場景分析 43
1.10.1 可變變量與應用場景 .43
1.10.2 PHP 變量引用(傳址)賦值使用場景分析 .46
1.10.3 PHP 外部超全局變量場景分析 .48
1.10.4 PHP 預定義系統(tǒng)常量場景分析 .51
1.10.5 PHP 變量檢測與銷毀(刪除) .52
【示例1-5】變量檢測與銷毀(刪除) .56
1.10.6 PHP 常量的定義與檢測場景分析 .57
1.11 本章小結 59
第2 章 PHP 數組
2.1 數組的聲明及類型 60
2.1.1 數組的聲明 .60
【示例2-1】數組的定義、賦值及取值 .61
2.2.2 數組的類型 .61
2.2 數組的構造 62
【示例2-2】二維數組使用 62
2.3 數組遍歷方法 62
2.3.1 使用foreach 循環(huán)遍歷數組 .62
【示例2-3】使用foreach 遍歷數組 .63
2.3.2 使用list() 函數遍歷數組 .64
【示例2-4】使用list() 函數遍歷數組 .64
2.4 數組常用操作 64
2.4.1 統(tǒng)計數組元素個數 .64
【示例2-5】使用count() 函數統(tǒng)計數組$arr1 和$arr2 的元素個數 64
2.4.2 數組與字符串的轉換 .66
【示例2-6】過濾敏感字 .66
【示例2-7】使用implode() 函數將數組轉換為字符串 .68
2.4.3 數組的查找 .68
【示例2-8】在數組中查找元素的鍵名及鍵值 .68
2.4.4 數組的排序 .69
【示例2-9】數組的升序與降序排列 .69
【示例2-10】關聯數組按鍵值及鍵名并保持鍵值對應關系 .70
2.4.5 數組的拆分與合并 .71
【示例2-11】數組元素的取出和替換 .72
【示例2-12】兩個或兩個以上含有相同鍵與不同鍵的數組合并 .73
2.4.6 數組鍵及鍵值的判斷 .73
【示例2-13】判斷數組鍵“one”“1”“two”及“2”是否存在 .73
【示例2-14】 通過array_key_exists() 函數測試數組鍵是否存在,通過empty() 和isset() 測試數組鍵的鍵值是否存在 .74
2.4.7 數組元素的檢索 .75
【示例2-15】使用in_array() 函數在數組array 中搜索指定的value 值 75
【示例2-16】 使用array_key_exists() 函數判斷某個數組array 中是否存在
指定的key(鍵) 76
【示例2-17】 使用array_search() 函數在數組中查找一個鍵值,若找到則
返回鍵名;如果未找到則返回false 76
2.4.8 數組元素的過濾 .76
【示例2-18】 使用array_filter() 函數過濾空數組,所有為false 的元素將會被移除 .77
【示例2-19】使用array_filter() 函數去掉多維空值,而數組的下標沒有改變 77
【示例2-20】 使用foreach() 語句及unset() 函數去掉數組的空值,而數組的下標沒有改變 .78
【示例2-21】 使用for() 語句及unset() 函數去掉數組的空值,而數組的下標沒有改變 .78
2.4.9 將數組分配到符號表 .79
【示例2-22】 使用關聯數組,將鍵值”Cat””Dog”和”Horse”賦值給變量$a1、$b1 和$c1 80
【示例2-23】使用索引數組,變量名前綴為“gcc” .80
2.4.10 PHP 數組的出棧與入棧 .81
【示例2-24】 在給定一個數組的3 個元素中,移除最后一個元素(索引最大的元素)并返回這個被移除的元素值 .81
2.5 PHP 預定義數組 83
2.5.1 $_SERVER[] 數組 84
2.5.2 $GLOBALS[] 數組 .86
【示例2-25】 函數內通過Global 聲明全局變量與$GLOBALS[] 調用外部
變量 .86
2.5.3 $_ENV[] 數組 .87
2.6 本章小結 88
第3 章 面向對象的程序開發(fā)
3.1 類和對象 89
3.1.1 類和對象的定義 .89
3.1.2 類的屬性解釋 .90
3.1.3 PHP 的引用變量 .91
3.1.4 類的方法 .92
【示例3-1】 在外部訪問內部方法傳參(實參)個數多于設定的
參數個數(形參) .93
【示例3-2】 在外部訪問內部方法傳參(實參)個數多于設定的
參數個數(形參) .93
3.1.5 構造方法 .94
【示例3-3】實例化類時設定參數值并由構造方法接收 .94
3.1.6 析構函數與PHP 的垃圾回收機制 94
3.2 繼承類 95
3.2.1 怎樣繼承一個類 .95
3.2.2 類的屬性及方法修飾符的使用 .97
3.2.3 類重寫 .97
3.2.4 使用parent:: 關鍵字 .99
3.2.5 類方法重載 .100
3.3 類特性 101
3.3.1 靜態(tài)變量和方法 .101
3.3.2 final 類、final 方法和常量 .106
3.3.3 abstract 類和abstract 方法 .107
3.4 接口 108
3.5 PHP 5 中的魔術方法簡介 .110
3.5.1 __set 魔術方法 110
3.5.2 __get 魔術方法 .111
3.5.3 __call 魔術方法 111
3.5.4 __toString 魔術方法 .112
3.6 PHP 魔術變量、魔術方法、常規(guī)函數以及回調函數的使用 113
3.6.1 PHP 魔術變量 .113
3.6.2 PHP 魔術方法使用 .117
3.6.3 PHP 典型函數的使用 .123
3.6.4 PHP 函數檢測與回調綜合運用 .128
3.7 本章小結 132
第4 章 PHP MVC 程序設計
4.1 MVC 三大核心部件 133
4.1.1 數據和規(guī)則:模型 .134
4.1.2 交互界面:視圖 .134
4.1.3 調用返回:控制器 .134
4.1.4 MVC 優(yōu)缺點 .134
4.2 PHP 模板引擎Smarty 概述 135
4.2.1 什么是模板引擎 .135
4.2.2 Smarty 的優(yōu)缺點 136
4.3 Smarty 的部署與配置 137
4.3.1 Smarty 的部署 138
4.3.2 Smarty 的配置 139
4.3.3 實踐案例:替代模板文件中特定的Smarty 變量 .140
4.4 Smarty 的使用步驟 143
4.5 Smarty 變量 144
4.5.1 模板中輸出PHP 分配的變量 144
4.5.2 模板中輸出非PHP 分配的變量 152
4.5.3 變量調節(jié)器 .153
4.6 Smarty 流程控制 158
4.6.1 條件選擇結構if-else 158
4.6.2 Smarty 中與數組下標無關的foreach 循環(huán)結構 159
4.6.3 Smarty 中與數組下標有關的section 循環(huán)結構 .163
4.7 Smarty 的緩存處理 167
4.7.1 在Smarty 中控制緩存 .167
4.7.2 一個頁面多個緩存 .169
4.7.3 為緩存實例消除處理開銷 .169
4.7.4 清除緩存 .170
4.7.5 關閉局部緩存 .171
4.8 本章小結 172
第5 章 PHP 錯誤與異常處理
5.1 PHP 的錯誤處理機制 174
5.2 自定義錯誤處理 176
錯誤路徑信息 .177
路徑信息 .178
5.3 PHP 的異常處理 179
5.3.1 異常的拋出與捕獲 .179
5.3.2 基本異常(Exception)類介紹 .181
5.3.3 自定義異常 .181
5.3.4 捕獲多個異常 .182
5.4 本章小結 183
第6 章 PHP 操作MySQL 數據庫
6.1 PHP 操作MySQL 數據庫的基本操作 .184
6.1.1 連接MySQL 服務器 187
6.1.2 選擇MySQL 數據庫 189
6.1.3 執(zhí)行SQL 語句 .190
6.1.4 關閉MySQL 數據庫服務器的連接 191
6.1.5 處理查詢結果集 .192
6.2 獲取數據庫信息 198
6.2.1 獲取服務器所有數據庫 .198
6.2.2 獲取數據庫內的表 .199
6.2.3 獲取數據表的字段信息 .200
6.2.4 獲取錯誤信息 .203
6.3 實踐案例:實現一個留言板的簡單管理 203
6.3.1 添加留言信息 .203
6.3.2 分頁顯示留言信息 .206
6.3.3 查詢單條留言詳細信息 .209
6.3.4 編輯留言信息 .210
6.3.5 刪除留言信息 .212
6.3.6 案例部分截圖 .212
6.4 PHP 獲取MySQL 數據庫存儲程序的輸出(out)參數值 214
6.4.1 PHP(PDO 驅動)獲取MySQL 存儲過程的out 參數值 215
6.4.2 PHP(PDO 驅動)獲取MySQL 數據庫存儲函數的返回值 216
6.4.3 PHP(mysqli 驅動)獲取MySQL 存儲過程的out 參數值 217
6.4.4 PHP(mysqli 驅動)獲取MySQL 存儲函數的返回值 .218
6.5 本章小結 219
第7 章 PHP mysqli 擴展與PDO 驅動
7.1 mysqli 擴展 220
7.1.1 mysqli 簡介 .220
7.1.2 使用mysqli 擴展訪問數據庫 221
7.1.3 PHP 通過mysqli 擴展實現對MySQL 數據庫的操作 .223
7.1.4 預準備語句 .224
7.1.5 執(zhí)行多個查詢 .226
7.2 使用PDO 訪問數據庫 227
7.2.1 PDO 連接MySQL 數據庫 .228
7.2.2 使用PDO 執(zhí)行SQL 語句 .229
7.2.3 PDO 對錯誤的處理 233
7.2.4 PDO 對事務的處理 235
7.2.5 PDO 訪問MySQL 數據庫總結 .237
7.3 使用ADODB 第三方插件連接數據庫 243
7.3.1 使用ADODB 連接數據庫 .243
7.3.2 使用ADODB 執(zhí)行查詢 .244
循環(huán)輸出數據 .246
7.3.3 使用ADODB 執(zhí)行數據庫增、刪、改操作 .250
7.3.4 ADODB 公用變量 252
7.3.5 ADODB 中的GetMenu() 和Render() 函數使用方法 254
7.3.6 ADODB 訪問MySQL 數據庫總結 .257
7.4 PHP 與Oracle 數據庫 .263
7.4.1 PHP 通過PDO 驅動連接Oracle 數據庫 263
7.4.2 PHP 獲取Oracle 數據庫存儲程序返回值 277
7.5 本章小結 280
第8 章 PHP 與XML 之間的互動
8.1 XML 語法 282
8.1.1 XML 文檔結構 .282
8.1.2 使用PHP 創(chuàng)建XML 文檔 .283
8.2 使用PHP 的SimpleXML 創(chuàng)建和解析XML .284
8.2.1 使用SimpleXML 把非來自數據庫的信息生成XML 文檔及解析 285
8.2.2 使用SimpleXML 把來自數據庫的信息生成XML 文檔及解析 287
8.3 使用PHP 的DOMDocument 創(chuàng)建XML 和解析XML 292
8.3.1 使用DOMDocument 生成XML .292
8.3.2 使用XMLReader 解析XML 為數組并輸出 294
8.4 XML 的應用——RSS .295
8.4.1 為什么使用RSS .296
8.4.2 RSS 2.0 中的頻道 .296
8.4.3 RSS 2.0 中的項 .297
8.4.4 使用PHP 實現訂閱 298
8.4.5 實踐案例:使用PHP 動態(tài)生成RSS 2.0 XML 300
8.4.6 實踐案例:PHP 通過RSS 類動態(tài)生成RSS 2.0 XML 304
8.5 本章小結 315
第9 章 PHP 的輔助技術
9.1 PHP 代碼優(yōu)化技術 316
9.1.1 Zend OPcache 316
9.1.2 啟用頁面壓縮技術 .317
9.2 圖像處理技術 320
9.2.1 開啟GD 庫 .321
9.2.2 創(chuàng)建圖像 .322
9.2.3 生成圖像驗證碼 .323
9.2.4 產生縮略圖 .325
9.3 PHP 調試工具Xdebug 327
9.3.1 Xdebug 安裝 .327
9.3.2 Xdebug 基本使用 .333
9.3.3 Xdebug 的特制函數 .334
9.4 PHP 生成PDF 技術 .335
9.4.1 PHP 通過PDFlib 生成PDF 文件 335
9.4.2 PHP 通過FPDF 生成PDF 文件 336
9.4.3 PHP 通過MPDF 生成PDF 文件 345
9.5 PHP 生成Excel 技術 .356
9.5.1 PHPExcel 類庫 356
9.5.2 PHP 讀/ 寫csv 文件364
【示例9-16】輸出為下載csv 文件364
【示例9-17】直接生成csv 文件 365
【示例9-18】csv 文件的讀取和寫入,完全通過數組的方式操作 .366
9.6 PHP MemCache 緩存管理技術.367
9.6.1 memcache 概述368
9.6.2 WAMP 環(huán)境——Apache/2.4.37(Win64) php/7.3.1 Memcache 的安裝.368
9.6.3 PHP 緩存管理案例(摘自一個應用系統(tǒng))381
9.7 本章小結385
第10 章 PHP 操作中文分詞
10.1 PHP 操作中文分詞應用場景386
10.2 PHP 的中文分詞(切詞)工具387
10.3 MySQL 自身支持的全文檢索.390
【示例10-1】通過MySQL 自身提供的MATCH() 函數實現全文檢索391
10.4 PHP Sphinx 中文全文檢索391
10.4.1 Sphinx 簡介391
10.4.2 Sphinx for windows 下載392
10.4.3 Sphinx 的配置393
10.4.4 運行Sphinx398
10.4.5 Sphinx 全文搜索結果匹配模式及搜索語法400
10.4.6 PHP 調用Sphinx402
10.4.7 Sphinx 連接Oracle 的sphinx.conf 配置實例413
10.4.8 Sphinx/searchd 命令參考419
10.4.9 Sphinx/indexer.exe 及searchd.exe 命令總結 421
10.5 PHP Sphinx 索引的即時更新422
10.5.1 sphinx 增量索引設置的說明.422
10.5.2 sphinx 增量索引示例 422
10.5.3 關于索引合并的一些建議427
10.6 PHP Sphinx 分布式索引427
10.6.1 Sphinx 分布式索引原理.427
10.6.2 Sphinx 分布式索引配置428
10.7 PHP Sphinx 實時索引.429
10.8 實踐案例:PHP + PHPANALYSIS + Sphinx 實現中文全文檢索435