PHP是當(dāng)前開(kāi)發(fā)Web應(yīng)用系統(tǒng)最理想的工具,它易于使用、功能強(qiáng)大、成本低廉、高安全性、開(kāi)發(fā)速度快且執(zhí)行靈活,應(yīng)用非常廣泛。全書以實(shí)用為設(shè)計(jì)目標(biāo),包含PHP開(kāi)發(fā)最主流的各項(xiàng)技術(shù),對(duì)每一個(gè)知識(shí)點(diǎn)都進(jìn)行了深入詳細(xì)的講解,并附有大量的實(shí)例代碼,圖文并茂,系統(tǒng)地介紹了PHP的相關(guān)技術(shù)及其在實(shí)際Web開(kāi)發(fā)中的應(yīng)用。全書分為17章,每章都是PHP獨(dú)立知識(shí)點(diǎn)的總結(jié)。內(nèi)容涵蓋了PHP的基本語(yǔ)法、PHP的流程控制、PHP的函數(shù)應(yīng)用、PHP中的數(shù)組與數(shù)據(jù)結(jié)構(gòu)、PHP面向?qū)ο蟮某绦蛟O(shè)計(jì)、字符串處理、PHP的錯(cuò)誤和異常處理、會(huì)話控制、超輕量級(jí)PHP框架BroPHP 2.0等。每章都有大量的實(shí)用示例及詳盡的注釋,以加速讀者的理解和學(xué)習(xí)。對(duì)于PHP應(yīng)用開(kāi)發(fā)的新手而言,本書不失為一本好的入門教材,內(nèi)容既實(shí)用又全面,所有實(shí)例都可以在開(kāi)發(fā)中直接應(yīng)用,并輔以大量的視頻教程,使讀者輕松掌握所學(xué)知識(shí)。另外,本書也適合有一定基礎(chǔ)的網(wǎng)絡(luò)開(kāi)發(fā)人員和網(wǎng)絡(luò)愛(ài)好者,以及大中專院校的師生閱讀與參考。對(duì)于行家來(lái)說(shuō),本書也是一本難得的參考手冊(cè),讀者必將從中獲益。
目錄
CONTENTS
第1章 LAMP網(wǎng)站構(gòu)建 1
1.1 介紹Web給你認(rèn)識(shí) 1
1.1.1 Web應(yīng)用的優(yōu)勢(shì) 3
1.1.2 Web開(kāi)發(fā)標(biāo)準(zhǔn) 4
1.1.3 認(rèn)識(shí)腳本語(yǔ)言 5
1.2 動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)所需的Web構(gòu)件 5
1.2.1 客戶端瀏覽器 6
1.2.2 超文本標(biāo)記語(yǔ)言(HTML) 7
1.2.3 層疊樣式表(CSS) 8
1.2.4 客戶端腳本編程語(yǔ)言JavaScript 9
1.2.5 Web服務(wù)器 10
1.2.6 服務(wù)器端編程語(yǔ)言 11
1.2.7 數(shù)據(jù)庫(kù)管理系統(tǒng) 12
1.3 LAMP網(wǎng)站開(kāi)發(fā)組合概述 13
1.3.1 Linux操作系統(tǒng) 13
1.3.2 Web服務(wù)器Apache 14
1.3.3 MySQL數(shù)據(jù)庫(kù)管理系統(tǒng) 14
1.3.4 PHP后臺(tái)腳本編程語(yǔ)言 15
第2章 從搭建你的PHP開(kāi)發(fā)環(huán)境開(kāi)始 18
2.1 幾種常見(jiàn)的PHP環(huán)境安裝方式 18
2.1.1 Linux系統(tǒng)下源代碼包方式
安裝環(huán)境 19
2.1.2 在Windows系統(tǒng)上安裝Web
工作環(huán)境 19
2.1.3 搭建學(xué)習(xí)型的PHP工作環(huán)境 19
2.2 環(huán)境安裝對(duì)操作系統(tǒng)的選擇 20
2.2.1 選擇網(wǎng)站運(yùn)營(yíng)的操作系統(tǒng) 20
2.2.2 選擇網(wǎng)站開(kāi)發(fā)的操作系統(tǒng) 20
2.3 安裝集成PHP開(kāi)發(fā)環(huán)境 21
2.3.1 安裝前準(zhǔn)備 21
2.3.2 安裝步驟 21
2.3.3 環(huán)境測(cè)試 22
2.4 改變文檔根目錄www的位置 25
第3章 PHP的基本語(yǔ)法 26
3.1 PHP在Web開(kāi)發(fā)中的應(yīng)用 26
3.1.1 就從認(rèn)識(shí)PHP開(kāi)始吧 26
3.1.2 PHP都能做什么 27
3.2 第一個(gè)PHP腳本程序 30
3.3 PHP語(yǔ)言標(biāo)記 33
3.3.1 將PHP代碼嵌入HTML中的
位置 33
3.3.2 解讀開(kāi)始和結(jié)束標(biāo)記 34
3.4 指令分隔符“分號(hào)” 35
3.5 程序注釋 36
3.6 在程序中使用空白的處理 37
3.7 變量 38
3.7.1 變量的聲明 38
3.7.2 變量的命名 39
3.7.3 可變變量 41
3.7.4 變量的引用賦值 41
3.8 變量的類型 42
3.8.1 類型介紹 43
3.8.2 布爾型(boolean) 43
3.8.3 整型(integer) 44
3.8.4 浮點(diǎn)型(float或double) 45
3.8.5 字符串(string) 45
3.8.6 數(shù)組(array) 47
3.8.7 對(duì)象(object) 48
3.8.8 資源類型(resource) 48
3.8.9 NULL類型 49
3.8.10 偽類型介紹 50
3.9 數(shù)據(jù)類型之間相互轉(zhuǎn)換 50
3.9.1 自動(dòng)類型轉(zhuǎn)換 50
3.9.2 強(qiáng)制類型轉(zhuǎn)換 51
3.9.3 類型轉(zhuǎn)換細(xì)節(jié) 52
3.9.4 變量類型的測(cè)試函數(shù) 52
3.10 常量 53
3.10.1 常量的定義和使用 54
3.10.2 常量和變量 54
3.10.3 系統(tǒng)中的預(yù)定義常量 55
3.10.4 PHP中的魔術(shù)常量 55
3.11 PHP中的運(yùn)算符 56
3.11.1 算術(shù)運(yùn)算符 57
3.11.2 字符串運(yùn)算符 59
3.11.3 賦值運(yùn)算符 60
3.11.4 比較運(yùn)算符 60
3.11.5 邏輯運(yùn)算符 62
3.11.6 位運(yùn)算符 63
3.11.7 其他運(yùn)算符 66
3.11.8 運(yùn)算符的優(yōu)先級(jí) 67
3.12 表達(dá)式 68
第4章 PHP的流程控制結(jié)構(gòu) 69
4.1 分支結(jié)構(gòu) 69
4.1.1 單一條件分支結(jié)構(gòu)(if) 70
4.1.2 雙向條件分支結(jié)構(gòu)
(else子句) 71
4.1.3 多向條件分支結(jié)構(gòu)
(elseif子句) 72
4.1.4 多向條件分支結(jié)構(gòu)
(switch語(yǔ)句) 73
4.1.5 巢狀條件分支結(jié)構(gòu) 75
4.1.6 條件分支結(jié)構(gòu)實(shí)例應(yīng)用
(簡(jiǎn)單計(jì)算器) 76
4.2 循環(huán)結(jié)構(gòu) 78
4.2.1 while語(yǔ)句 78
4.2.2 do…while循環(huán) 81
4.2.3 for語(yǔ)句 81
4.3 特殊的流程控制語(yǔ)句 84
4.3.1 break語(yǔ)句 85
4.3.2 continue語(yǔ)句 85
4.3.3 exit語(yǔ)句 86
4.4 PHP的新版特性――goto語(yǔ)句 87
第5章 PHP的函數(shù)應(yīng)用 89
5.1 函數(shù)的定義 89
5.2 自定義函數(shù) 90
5.2.1 函數(shù)的聲明 90
5.2.2 函數(shù)的調(diào)用 92
5.2.3 函數(shù)的參數(shù) 93
5.2.4 函數(shù)的返回值 94
5.3 函數(shù)的工作原理和結(jié)構(gòu)化編程 96
5.4 PHP變量的范圍 97
5.4.1 局部變量 97
5.4.2 全局變量 98
5.4.3 靜態(tài)變量 99
5.5 聲明及應(yīng)用各種形式的PHP
函數(shù) 100
5.5.1 常規(guī)參數(shù)的函數(shù) 101
5.5.2 偽類型參數(shù)的函數(shù) 102
5.5.3 引用參數(shù)的函數(shù) 102
5.5.4 默認(rèn)參數(shù)的函數(shù) 103
5.5.5 可變個(gè)數(shù)參數(shù)的函數(shù) 105
5.5.6 回調(diào)函數(shù) 106
5.6 遞歸函數(shù) 110
5.7 使用自定義函數(shù)庫(kù) 111
5.8 PHP匿名函數(shù)和閉包 112
第6章 PHP中的數(shù)組與數(shù)據(jù)結(jié)構(gòu) 114
6.1 數(shù)組的分類 114
6.2 數(shù)組的定義 116
6.2.1 直接賦值的方式聲明數(shù)組 116
6.2.2 使用array()語(yǔ)言結(jié)構(gòu)新建數(shù)組 118
6.2.3 多維數(shù)組的聲明 119
6.3 數(shù)組的遍歷 121
6.4 預(yù)定義數(shù)組 124
6.4.1 服務(wù)器變量:$_SERVER 125
6.4.2 環(huán)境變量:$_ENV 126
6.4.3 URL GET變量:$_GET 126
6.4.4 HTTP POST變量:$_POST 127
6.4.5 request變量:$_REQUEST 128
6.4.6 HTTP文件上傳變量:
$_FILES 128
6.4.7 HTTP Cookies:$_COOKIE 128
6.4.8 Session變量:$_SESSION 128
6.4.9 Global變量:$GLOBALS 128
6.5 數(shù)組的相關(guān)處理函數(shù) 129
6.6 操作PHP數(shù)組需要注意的
一些細(xì)節(jié) 133
6.6.1 數(shù)組運(yùn)算符號(hào) 133
6.6.2 刪除數(shù)組中的元素操作 134
6.6.3 關(guān)于數(shù)組下標(biāo)的注意事項(xiàng) 135
第7章 PHP面向?qū)ο蟮某绦蛟O(shè)計(jì) 136
7.1 面向?qū)ο蟮慕榻B 136
7.1.1 類和對(duì)象之間的關(guān)系 137
7.1.2 面向?qū)ο蟮某绦蛟O(shè)計(jì) 138
7.2 如何抽象一個(gè)類 138
7.2.1 類的聲明 139
7.2.2 成員屬性 139
7.2.3 成員方法 140
7.3 通過(guò)類實(shí)例化對(duì)象 142
7.3.1 實(shí)例化對(duì)象 142
7.3.2 對(duì)象中成員的訪問(wèn) 143
7.3.3 特殊的對(duì)象引用“$this” 145
7.3.4 構(gòu)造方法與析構(gòu)方法 147
7.4 封裝性 150
7.4.1 設(shè)置私有成員 150
7.4.2 私有成員的訪問(wèn) 151
7.4.3 __set()和__get()兩個(gè)方法 153
7.5 繼承性 157
7.5.1 類繼承的應(yīng)用 157
7.5.2 訪問(wèn)類型控制 159
7.5.3 子類中重載父類的方法 161
7.6 常見(jiàn)的關(guān)鍵字和魔術(shù)方法 163
7.6.1 final關(guān)鍵字的應(yīng)用 164
7.6.2 static關(guān)鍵字的使用 165
7.6.3 單態(tài)設(shè)計(jì)模式 166
7.6.4 const關(guān)鍵字 167
7.6.5 instanceof關(guān)鍵字 168
7.6.6 克隆對(duì)象 168
7.6.7 類中通用的方法__toString() 170
7.6.8 __call()方法的應(yīng)用 170
7.6.9 自動(dòng)加載類 172
7.6.10 對(duì)象串行化 173
7.7 抽象類與接口 175
7.7.1 抽象類 176
7.7.2 接口技術(shù) 177
7.8 多態(tài)性的應(yīng)用 179
7.9 PHP 5.4的Trait特性 181
7.9.1 Trait的聲明 181
7.9.2 Trait的基本使用 182
7.10 PHP 5.3版本以后新增加的
命名空間 184
7.10.1 命名空間的基本應(yīng)用 184
7.10.2 命名空間的子空間和公共空間 186
7.10.3 命名空間中的名稱和術(shù)語(yǔ) 187
7.10.4 別名和導(dǎo)入 188
第8章 字符串處理 190
8.1 字符串的處理介紹 190
8.1.1 字符串的處理方式 190
8.1.2 字符串類型的特點(diǎn) 191
8.1.3 雙引號(hào)中的變量解析總結(jié) 192
8.2 常用的字符串輸出函數(shù) 193
8.3 常用的字符串格式化函數(shù) 195
8.3.1 去除空格和字符串填補(bǔ)函數(shù) 196
8.3.2 字符串大小寫的轉(zhuǎn)換 197
8.3.3 和HTML標(biāo)簽相關(guān)的字符串
格式化 198
8.3.4 其他字符串格式化函數(shù) 202
8.4 字符串比較函數(shù) 203
8.4.1 按字節(jié)順序進(jìn)行字符串比較 203
8.4.2 按自然排序進(jìn)行字符串比較 204
第9章 正則表達(dá)式 206
9.1 正則表達(dá)式簡(jiǎn)介 206
9.2 正則表達(dá)式的語(yǔ)法規(guī)則 207
9.2.1 定界符 208
9.2.2 原子 208
9.2.3 元字符 210
9.2.4 模式修正符 213
9.3 與Perl兼容的正則表達(dá)式函數(shù) 214
9.3.1 字符串的匹配與查找 215
9.3.2 字符串的替換 218
9.3.3 字符串的分割和連接 223
第10章 PHP的錯(cuò)誤和異常處理 226
10.1 錯(cuò)誤處理 226
10.1.1 錯(cuò)誤報(bào)告級(jí)別 227
10.1.2 調(diào)整錯(cuò)誤報(bào)告級(jí)別 227
10.2 異常處理 230
10.2.1 異常處理實(shí)現(xiàn) 230
10.2.2 擴(kuò)展PHP內(nèi)置的異常
處理類 231
10.2.3 捕獲多個(gè)異常 232
第11章 文件系統(tǒng)處理 235
11.1 文件系統(tǒng)概述 235
11.1.1 文件類型 236
11.1.2 文件的屬性 236
11.2 目錄的基本操作 239
11.2.1 解析目錄路徑 240
11.2.2 遍歷目錄 241
11.2.3 統(tǒng)計(jì)目錄大小 242
11.2.4 建立和刪除目錄 243
11.2.5 復(fù)制目錄 244
11.3 文件的基本操作 245
11.3.1 文件的打開(kāi)與關(guān)閉 245
11.3.2 寫入文件 247
11.3.3 讀取文件內(nèi)容 248
11.3.4 訪問(wèn)遠(yuǎn)程文件 250
11.3.5 移動(dòng)文件指針 251
11.3.6 文件的鎖定機(jī)制 252
11.3.7 文件的一些基本操作函數(shù) 255
11.4 文件的上傳與下載 256
11.4.1 文件上傳 256
11.4.2 處理多個(gè)文件上傳 260
11.4.3 文件下載 261
第12章 PHP動(dòng)態(tài)圖像處理 263
12.1 PHP中GD庫(kù)的使用 263
12.1.1 畫布管理 265
12.1.2 設(shè)置顏色 265
12.1.3 生成圖像 266
12.1.4 繪制圖像 267
12.1.5 在圖像中繪制文字 269
12.2 設(shè)計(jì)經(jīng)典的驗(yàn)證碼類 272
12.2.1 設(shè)計(jì)驗(yàn)證碼類 272
12.2.2 應(yīng)用驗(yàn)證碼類的實(shí)例對(duì)象 275
12.2.3 表單中應(yīng)用驗(yàn)證碼 275
12.2.4 實(shí)例演示 276
12.3 PHP圖片處理 276
12.3.1 圖片背景管理 276
12.3.2 圖片縮放 278
12.3.3 圖片裁剪 280
12.3.4 添加圖片水印 281
12.3.5 圖片旋轉(zhuǎn)和翻轉(zhuǎn) 282
第13章 數(shù)據(jù)庫(kù)抽象層PDO 285
13.1 PDO所支持的數(shù)據(jù)庫(kù) 285
13.2 PDO的安裝 287
13.3 創(chuàng)建PDO對(duì)象 288
13.3.1 以多種方式調(diào)用構(gòu)造方法 289
13.3.2 PDO對(duì)象中的成員方法 291
13.4 使用PDO對(duì)象 291
13.4.1 調(diào)整PDO的行為屬性 292
13.4.2 PDO處理PHP程序和數(shù)據(jù)庫(kù)
之間的數(shù)據(jù)類型轉(zhuǎn)換 292
13.4.3 PDO的錯(cuò)誤處理模式 293
13.4.4 使用PDO執(zhí)行SQL語(yǔ)句 294
13.5 PDO對(duì)預(yù)處理語(yǔ)句的支持 296
13.5.1 了解PDOStatement對(duì)象 296
13.5.2 準(zhǔn)備語(yǔ)句 297
13.5.3 綁定參數(shù) 298
13.5.4 執(zhí)行準(zhǔn)備好的查詢 299
13.5.5 獲取數(shù)據(jù) 300
第14章 會(huì)話控制 305
14.1 為什么要使用會(huì)話控制 305
14.2 會(huì)話跟蹤的方式 306
14.3 Cookie的應(yīng)用 307
14.3.1 Cookie概述 307
14.3.2 向客戶端計(jì)算機(jī)中設(shè)置
Cookie 308
14.3.3 在PHP腳本中讀取Cookie
的資料內(nèi)容 309
14.3.4 數(shù)組形態(tài)的Cookie應(yīng)用 310
14.3.5 刪除Cookie 310
14.3.6 基于Cookie的用戶登錄
模塊 311
14.4 Session的應(yīng)用 313
14.4.1 Session概述 313
14.4.2 配置Session 314
14.4.3 Session的聲明與使用 315
14.4.4 注冊(cè)一個(gè)會(huì)話變量和讀取
Session 315
14.4.5 注銷變量與銷毀Session 316
14.4.6 Session的自動(dòng)回收機(jī)制 318
14.4.7 傳遞Session ID 318
14.5 一個(gè)簡(jiǎn)單的郵件系統(tǒng)實(shí)例 321
14.5.1 為郵件系統(tǒng)準(zhǔn)備數(shù)據(jù) 321
14.5.2 編碼實(shí)現(xiàn)郵件系統(tǒng) 323
14.5.3 郵件系統(tǒng)執(zhí)行說(shuō)明 325
第15章 PHP的模板引擎Smarty 327
15.1 什么是模板引擎 327
15.2 選擇Smarty模板引擎 329
15.3 安裝Smarty及初始化配置 330
15.3.1 安裝Smarty 330
15.3.2 初始化Smarty類庫(kù)的默認(rèn)
設(shè)置 331
15.3.3 第一個(gè)Smarty的簡(jiǎn)單示例 334
15.4 Smarty的基本應(yīng)用 337
15.4.1 PHP程序員常用的和Smarty
相關(guān)的操作 337
15.4.2 模板設(shè)計(jì)時(shí)美工的常用操作 339
15.5 Smarty模板設(shè)計(jì)的基本語(yǔ)法 339
15.5.1 模板中的注釋 340
15.5.2 模板中的變量應(yīng)用 340
15.5.3 模板中的函數(shù)應(yīng)用 342
15.5.4 忽略Smarty解析 345
15.5.5 在模板中使用保留變量 345
15.6 Smarty模板中的變量調(diào)解器 347
15.6.1 變量調(diào)解器函數(shù)的使用
方式 348
15.6.2 Smarty默認(rèn)提供的變量
調(diào)解器 348
15.7 Smarty模板中的內(nèi)置函數(shù) 350
15.7.1 流程控制 350
15.7.2 數(shù)組遍歷 353
第16章 MVC模式與PHP框架 356
16.1 MVC模式在Web中的應(yīng)用 356
16.1.1 MVC模式的工作原理 356
16.1.2 MVC模式的優(yōu)缺點(diǎn) 358
16.2 PHP開(kāi)發(fā)框架 359
16.2.1 什么是框架 359
16.2.2 為什么要用框架 360
16.2.3 框架和MVC設(shè)計(jì)模式
的關(guān)系 360
16.2.4 比較流行的PHP框架 361
16.3 劃分模塊和操作 362
16.3.1 為項(xiàng)目劃分模塊 363
16.3.2 為模塊設(shè)置操作 363
16.4 小結(jié) 364
第17章 超輕量級(jí)PHP框架
BroPHP 2.0 365
17.1 BroPHP框架概述 365
17.1.1 系統(tǒng)特點(diǎn) 366
17.1.2 環(huán)境要求 366
17.1.3 BroPHP框架源碼的目錄
結(jié)構(gòu) 367
17.2 單一入口 367
17.3 部署項(xiàng)目應(yīng)用目錄 369
17.3.1 項(xiàng)目推薦的部署方式 370
17.3.2 URL訪問(wèn) 371
17.4 BroPHP框架的基本設(shè)置 373
17.4.1 默認(rèn)開(kāi)啟 373
17.4.2 配置文件 373
17.4.3 內(nèi)置函數(shù) 375
17.5 聲明控制器(Control) 376
17.5.1 控制器的聲明(模塊) 376
17.5.2 操作的聲明 377
17.5.3 頁(yè)面跳轉(zhuǎn) 378
17.5.4 重定向 380
17.6 設(shè)計(jì)視圖(View) 381
17.6.1 視圖與控制器之間的交互 381
17.6.2 切換模板風(fēng)格 381
17.6.3 模板文件的聲明規(guī)則 382
17.6.4 display()的新用法 382
17.6.5 模板中的幾個(gè)常用變量應(yīng)用 383
17.6.6 在PHP程序中定義資源位置 384
17.7 應(yīng)用模型(Model) 384
17.7.1 BroPHP數(shù)據(jù)庫(kù)操作接口的
特性 384
17.7.2 切換數(shù)據(jù)庫(kù)驅(qū)動(dòng) 385
17.7.3 聲明和實(shí)例化Model 386
17.7.4 數(shù)據(jù)庫(kù)的統(tǒng)一操作接口 389
17.8 自動(dòng)驗(yàn)證 407
17.9 緩存設(shè)置 410
17.9.1 基于memcached緩存設(shè)置 410
17.9.2 基于Smarty的緩存機(jī)制 410
17.10 調(diào)試模式 411
17.11 內(nèi)置擴(kuò)展類庫(kù) 412
17.11.1 分頁(yè)類Page 412
17.11.2 驗(yàn)證碼類Vcode 414
17.11.3 圖像處理類Image 415
17.11.4 文件上傳類FileUpload 416
17.11.5 BroPHP 2.0新增加的文件
緩存類FileCache 418
17.11.6 BroPHP 2.0新增加的無(wú)限
分類處理類CatTree 420
17.12 自定義功能擴(kuò)展 423
17.12.1 自定義擴(kuò)展類庫(kù) 423
17.12.2 自定義擴(kuò)展函數(shù)庫(kù) 423
17.13 BroPHP 2.0數(shù)據(jù)庫(kù)分離部署
方案 424
17.13.1 數(shù)據(jù)分離方法 424
17.13.2 數(shù)據(jù)庫(kù)連接配置 424
17.13.3 數(shù)據(jù)模型配置 425
17.14 BroPHP 2.0資源分布式部署 426
17.14.1 網(wǎng)站資源分布式部署方法 426
17.14.2 部署上傳的文件資源 427
17.14.3 部署縮略圖的資源位置 428
17.14.4 將公共資源和單個(gè)應(yīng)用中的
資源分離部署 428