PHP是當前開發Web應用系統中比較理想的工具,它易于使用、功能強大、成本低廉、安全性高、開發速度快且執行靈活,應用非常廣泛。使用PHP+MySQL開發的Web項目,在軟件方面的投資成本較低、運行穩定,因此在當今互聯網中常見的應用平臺,比如微博、論壇、門戶、電子商務等很多項目都是由PHP實現的,無論是從性能、質量,還是價格上,PHP+MySQL都已成為企業優先考慮的開發組合。
本書以Web應用開發為背景,較為詳細地介紹了PHP及相關技術,內容包括PHP概述與開發環境的搭建、語法基礎、PHP流程控制語句、PHP函數、PHP數組應用、Web互動與會話技術、MySQL數據庫、PHP操作MySQL數據庫、PHP面向對象編程、PDO數據庫抽象層、PHP與MVC開發模式、文件和目錄操作、PHP圖形圖像處理、程序調試與錯誤處理等內容。本書具有以下特色。
(1) 知識點全。本書緊密圍繞PHP 語言展開講解,具有很強的邏輯性和系統性。
(2) 以代碼驅動學習。每章都配有與本章知識相關的眾多示例,強調動手實踐,用代碼來驅動讀者一步步學會PHP應用開發。
(3) 示例豐富。書中各示例均經過精心設計和挑選,它們都是根據作者在實際開發中的經驗總結而來的,較全面地反映了在實際開發中所遇到的各種問題。
(4) 零基礎入門。本書完全面向沒有PHP語言基礎的讀者,全書將PHP語言拆分成一個個小的技術點,讓讀者能輕松閱讀下去,有助于讀者盡快掌握這門語言。
(5) 配備素材,方便學習。本書提供所有案例需要的源文件,以便讀者參考學習。
總之,本書難度適中,內容由淺入深,實用性強,覆蓋面廣,條理清晰,書中的大量內容來自實際開發案例,使讀者更容易掌握PHP 程序的開發技能。
在本書的編寫過程中,編者力求精益求精,但難免存在疏漏和不足之處,敬請廣大讀者批評指正。
編者2020年9月
第1章PHP概述與開發運行環境搭建/1
1.1PHP概述 1
1.1.1何謂PHP1
1.1.2PHP優勢1
1.1.3PHP運行環境2
1.1.4PHP的工作原理3
1.1.5如何學好PHP編程4
1.2網站與網頁5
1.2.1網站的基本概念5
1.2.2網站常用開發技術6
1.3網頁中的HTML6
1.3.1HTML基礎知識6
1.3.2HTML表單11
1.3.3表單數據的接收14
1.4集成開發環境搭建15
1.4.1PHP運行環境XAMPP的安裝15
1.4.2PHP開發常見編輯工具21
1.4.3NetBeans的安裝與使用22
思考與練習30
第2章PHP語法基礎/32
2.1PHP基本語法32
2.1.1PHP標記32
2.1.2編碼規范33
2.1.3代碼注釋36
2.1.4PHP語句及語句塊38
2.1.5PHP標識符與關鍵字38
2.1.6PHP大小寫敏感39
2.2PHP常量及預定義常量39
2.2.1聲明和使用常量40PHP網站開發與設計目錄2.2.2預定義常量41
2.3PHP變量43
2.3.1聲明變量 43
2.3.2變量賦值43
2.3.3可變變量45
2.3.4外部變量45
2.3.5變量或常量數據類型查看函數46
2.4PHP數據類型48
2.4.1標量數據類型48
2.4.2復合數據類型52
2.4.3特殊數據類型54
2.4.4偽類型55
2.4.5轉換數據類型56
2.4.6檢測數據類型58
2.4.7PHP數據的輸出59
2.5PHP運算符60
2.5.1算術運算符61
2.5.2字符串運算符61
2.5.3賦值運算符62
2.5.4自增或自減運算符63
2.5.5邏輯運算符63
2.5.6比較運算符64
2.5.7條件運算符65
2.5.8NULL合并運算符66
2.5.9組合比較運算符66
2.5.10位運算符66
2.5.11錯誤控制運算符67
2.5.12運算符的使用規則67
2.6表達式與語句68
思考與練習68
第3章PHP流程控制語句/71
3.1PHP的3種控制結構 71
3.1.1順序結構71
3.1.2選擇結構72
3.1.3循環結構72
3.2條件控制語句73
3.2.1if條件控制語句73
3.2.2switch多分支語句76
3.3循環控制語句78
3.3.1while循環語句78
3.3.2do…while循環語句79
3.3.3for循環語句80
3.3.4foreach循環語句82
3.4跳轉語句83
3.4.1break跳轉語句83
3.4.2continue跳轉語句84
3.4.3return語句85
3.4.4exit語句85
3.5PHP文件間包含86
3.5.1include()函數86
3.5.2include()函數和require()函數的區別87
3.5.3include_once()函數88
思考與練習90
第4章PHP函數/91
4.1函數91
4.1.1定義和調用函數91
4.1.2在函數間傳遞參數92
4.1.3從函數中返回值94
4.1.4變量函數94
4.1.5對函數的引用95
4.1.6取消引用96
4.1.7變量作用域96
4.1.8函數的高級調用98
4.2PHP變量函數庫102
4.3字符串與PHP字符串函數庫104
4.3.1初識字符串104
4.3.2去掉字符串首尾空格和特殊字符104
4.3.3截取字符串105
4.3.4分隔、合成字符串106
4.3.5MD5加密函數107
4.4PHP日期和時間函數庫108
4.4.1系統時區設置108
4.4.2格式化日期和時間109
4.4.3獲取日期和時間信息109
4.5正則表達式與相關函數110
4.5.1正則表達式的基本知識110
4.5.2正則表達式在PHP中的應用114
4.5.3正則表達式在JavaScript中的應用119
4.5.4正則表達式的其他特性120
思考與練習121
第5章PHP數組應用/124
5.1數組的基本概念124
5.1.1為什么引入數組124
5.1.2數組的概念125
5.1.3數組的類型125
5.2聲明數組126
5.2.1用戶創建數組126
5.2.2函數創建數組127
5.2.3創建二維數組128
5.3數組遍歷與輸出129
5.3.1訪問數組元素129
5.3.2數組遍歷方式131
5.3.3通過數組指針遍歷數組134
5.3.4數組元素輸出136
5.4數組的處理函數136
5.4.1獲取數組中的最后一個元素136
5.4.2刪除數組中的重復元素136
5.4.3獲取數組中指定元素的鍵名 137
5.4.4數組鍵與值的排序138
5.4.5字符串與數組的轉換139
5.5預定義數組140
5.5.1服務器變量: $_SERVER140
5.5.2環境變量: $_ENV140
5.5.3URL GET變量: $_GET140
5.5.4HTTP POST變量: $_POST141
5.5.5Request變量: $_REQUEST142
5.5.6HTTP文件上傳變量: $_FILES142
5.5.7HTTP Cookie變量: $_COOKIE143
5.5.8Session變量: $_SESSION144
5.5.9Global變量: $GLOBALS144
思考與練習145
第6章Web互動與會話技術/147
6.1Web服務器交互原理147
6.2頁面間的參數傳遞方式147
6.3瀏覽器端數據提交方式148
6.3.1GET提交方式148
6.3.2POST提交方式149
6.3.3兩種提交方式的比較150
6.3.4PHP獲取表單信息151
6.4在PHP腳本中使用JavaScript編程151
6.4.1JavaScript腳本的使用151
6.4.2數據類型和變量152
6.4.3彈出警告對話框152
6.4.4彈出確認對話框153
6.4.5document對象153
6.4.6彈出新窗口155
6.5Cookie管理156
6.5.1了解Cookie 156
6.5.2創建Cookie157
6.5.3讀取Cookie158
6.5.4刪除Cookie159
6.5.5Cookie的生命周期160
6.6Session管理160
6.6.1了解Session160
6.6.2創建Session161
6.6.3Session設置時間163
6.7Session高級應用164
6.7.1Session臨時文件164
6.7.2Session緩存165
6.8PHP頁面跳轉165
6.8.1header()函數165
6.8.2meta標簽166
6.8.3JavaScript腳本166
6.8.4在HTML標記中實現跳轉167
思考與練習167
第7章MySQL數據庫/170
7.1MySQL概述170
7.1.1MySQL的特點170
7.1.2SQL和MySQL170
7.2操作MySQL數據庫171
7.2.1創建新數據庫 171
7.2.2選擇指定數據庫171
7.2.3刪除指定數據庫 172
7.3操作MySQL數據表 172
7.3.1創建一個表172
7.3.2查看數據表結構173
7.3.3修改數據表結構 174
7.3.4重命名數據表175
7.3.5刪除指定數據表 175
7.4操作MySQL數據175
7.4.1向數據表中添加數據175
7.4.2更新數據表中數據176
7.4.3刪除數據表中數據176
7.4.4查詢數據表中數據177
7.5MySQL數據類型181
7.5.1數字類型181
7.5.2字符串類型181
7.5.3日期和時間類型181
7.6phpMyAdmin圖形化管理工具182
7.6.1管理數據庫182
7.6.2管理數據表184
7.6.3管理數據記錄185
7.6.4導入/導出數據190
思考與練習191
第8章PHP操作MySQL數據庫/195
8.1PHP操作MySQL數據庫的一般步驟195
8.2PHP顯示MySQL數據庫數據的函數應用196
8.2.1建立與MySQL數據庫服務器的連接196
8.2.2顯示MySQL數據庫中的數據198
8.2.3數據分頁顯示的原理及實現208
8.3PHP更新MySQL數據庫數據的函數應用212
8.3.1從頁面獲取數據并插入數據庫212
8.3.2根據表單內容修改數據庫數據214
8.3.3刪除數據庫數據219
8.4PHP操作MySQL數據庫常見錯誤及分析221
8.5mysql函數與mysqli函數連接數據庫的區別與用法222
思考與練習223
第9章PHP面向對象編程/225
9.1類與對象225
9.1.1什么是類225
9.1.2對象的由來225
9.1.3面向對象的特點226
9.2類的聲明227
9.2.1類的定義227
9.2.2成員變量227
9.2.3成員方法228
9.3類的實例化229
9.3.1創建對象229
9.3.2訪問類的成員230
9.3.3特殊的訪問方法——$this和::231
9.3.4構造函數和析構函數233
9.4面向對象的封裝性235
9.4.1public關鍵字235
9.4.2private關鍵字236
9.4.3protected關鍵字236
9.4.4靜態變量與靜態方法237
9.5面向對象的繼承性239
9.5.1類的繼承——extends關鍵字239
9.5.2類的繼承——parent關鍵字240
9.5.3覆蓋父類方法240
9.5.4final關鍵字241
9.6抽象類和接口242
9.6.1抽象類242
9.6.2接口244
9.7面向對象的多態性246
9.7.1通過繼承實現多態246
9.7.2通過接口實現多態 247
9.8面向對象的魔術方法248
9.8.1__set()和__get()方法248
9.8.2__isset()和__unset()方法249
9.8.3__call()方法249
9.8.4__toString()方法250
9.8.5__autoload()方法 251
9.8.6__clone()方法252
9.9兩種常見的設計模式253
9.9.1單例模式253
9.9.2工廠模式255
思考與練習256
第10章基于PDO數據庫抽象層/258
10.1什么是PDO258
10.1.1PDO概述258
10.1.2PDO的特點258
10.1.3安裝PDO259
10.2PDO連接數據庫259
10.2.1PDO構造函數260
10.2.2DSN詳解260
10.3在PDO中執行SQL語句261
10.3.1exec()方法261
10.3.2query()方法262
10.3.3預處理語句——prepare()和execute()方法263
10.4在PDO中獲取結果集265
10.4.1fetch()方法265
10.4.2fetchAll()方法267
10.4.3fetchColumn()方法268
10.5在PDO中捕獲SQL語句中的錯誤269
10.5.1使用默認模式269
10.5.2使用警告模式271
10.5.3使用異常模式272
10.6在PDO中處理錯誤275
10.6.1errorCode()方法275
10.6.2errorInfo()方法276
思考與練習277
第11章PHP與MVC開發模式/279
11.1什么是MVC模型279
11.2MVC模型的組成280
11.2.1控制器280
11.2.2模型280
11.2.3視圖281
11.3PHP開發中的模板技術281
11.3.1模板與模板引擎281
11.3.2在PHP程序中使用模板282
11.3.3Smarty模板引擎的概念284
11.3.4Smarty模板引擎的工作原理284
11.3.5Smarty模板引擎的使用285
11.4常見的基于MVC的PHP開發框架簡介286
11.4.1CodeIgniter287
11.4.2CakePHP287
11.4.3Zend Framework288
11.4.4FleaPHP288
11.5CodeIgniter框架應用289
11.5.1CodeIgniter的技術特點289
11.5.2安裝CodeIgniter289
11.5.3CodeIgniter的Controller類290
11.5.4CodeIgniter的Model類292
11.5.5CodeIgniter的View類293
11.6ThinkPHP框架的應用295
11.6.1ThinkPHP的安裝與項目創建295
11.6.2項目的創建296
11.6.3項目的配置297
11.6.4控制器類的創建297
11.6.5模型類的創建301
11.6.6模板文件的編寫302
11.7ThinkPHP應用實例——在線日程表307
11.7.1數據庫的設計307
11.7.2模板的設計307
11.7.3控制器的實現309
思考與練習311
第12章文件和目錄操作/312
12.1文件概述312
12.1.1文件類型312
12.1.2文件的常見屬性313
12.2基本的文件操作315
12.2.1打開文件315
12.2.2讀取文件內容317
12.2.3向文件中寫入數據321
12.2.4關閉文件指針323
12.2.5文件的其他操作323
12.3常用目錄操作323
12.3.1打開指定目錄324
12.3.2讀取目錄結構324
12.3.3關閉目錄指針325
12.4文件上傳處理326
12.4.1相關設置326
12.4.2全局變量 $_FILES應用326
12.4.3文件上傳與處理函數327
12.4.4多文件上傳329
12.4.5文件下載330
思考與練習331
第13章PHP圖形圖像處理/332
13.1了解GD2函數庫332
13.2設置GD2函數庫332
13.3常用的圖像處理333
13.3.1創建畫布333
13.3.2顏色處理334
13.3.3繪制文字335
13.3.4輸出圖像338
13.3.5銷毀圖像339
13.4運用Jpgraph類庫繪制圖像340
13.4.1Jpgraph類庫簡介340
13.4.2Jpgraph類庫的安裝340
13.4.3柱狀圖分析產品月銷售量341
13.4.4折線圖分析網站一天內的訪問走勢342
13.4.53D餅狀圖展示不同月份的業績344
思考與練習345
第14章程序調試與錯誤處理/346
14.1程序調試的基本流程346
14.2常見錯誤類型347
14.2.1語法錯誤347
14.2.2語義錯誤349
14.2.3邏輯錯誤349
14.2.4注釋錯誤350
14.2.5運行錯誤350
14.3錯誤處理機制351
14.3.1控制錯誤顯示及顯示方式351
14.3.2控制錯誤級別351
14.4常用程序調試方法352
14.4.1應用die()函數進行調試352
14.4.2應用mysql_error()函數輸出SQL語句的錯誤353
14.4.3應用try…catch語句拋出并捕獲異常354
14.5錯誤處理技巧355
14.5.1用“@”符號隱藏錯誤355
14.5.2自定義錯誤信息356
思考與練習356
參考文獻/358