前 言
PHP是目前世界上最為流行的Web開發語言之一。目前學習和關注PHP的人越來越多,而很多PHP初學者都苦于找不到一本通俗易懂、容易入門和示例實用的參考書。為此,作者組織有豐富經驗的開發人員編寫了這本PHP動態網站開發教材。
本書幾乎涉及PHP網站開發的所有重要知識,適合所有的PHP網站開發初學者快速入門,同時也適合想全面了解PHP+MySQL網站開發的人員閱讀。通過全書的學習,讀者可以完整地掌握PHP網站開發的技術要點,并具備動態網站開發的基本技術。
本書內容豐富全面,圖文并茂,步驟清晰,語言通俗易懂,使讀者能理解PHP網站開發的技術構成,并能解決實際生活或工作中的問題,真正做到知其然,更知其所以然。通過重點章節,條理清晰地介紹了讀者希望了解的知識,對PHP網站開發有興趣的讀者可以快速上手設計和制作動態網站。
本書注重實用,可操作性強,詳細講解了書中每一個知識點和每一個PHP網站開發的方法和技巧,是一本物超所值的參考用書。
本書特色
內容全面:知識點由淺入深,涵蓋了所有PHP知識點,可使讀者逐步掌握PHP+MySQL動態網站開發技術。
圖文并茂:注重操作,在介紹案例的過程中,每一個操作均有對應的插圖。這種圖文結合的方式使讀者在學習過程中能夠直觀、清晰地看到操作的過程和效果,便于更快地理解和掌握所講內容。
示例豐富:把知識點融匯于系統的示例當中,并且在示例中進行講解和拓展,從而達到“知其然,并知其所以然”的效果。
技巧提示:本書對讀者在學習過程中可能會遇到的疑難問題以“提示”和“技巧”的形式進行了說明,以免讀者在學習的過程中走彎路。
讀者對象
本書是一本完整介紹PHP網頁布局技術的教程,內容豐富,條理清晰,實用性強。
PHP語言初學者,可以快速掌握PHP語言開發的知識和技巧。
動態網站制作初學者,可以快速學會制作內容豐富的動態網站。
PHP+MySQL架構Web系統開發人員,可以在編程開發過程中參考。
源碼、課件、教學視頻和電子參考書下載
本書配套源碼、課件、教學視頻和電子參考書下載地址(注意數字和字母大小寫)如下:
http://yun.baidu.com/s/1pKUnkzL
如果下載有問題,請電子郵件聯系booksaga@163.com,郵件主題為“PHP 7編程”。
致謝
本書由劉增杰和張工廠編寫,參與編寫的還有胡同夫、王英英、肖品、孫若淞、王攀登、王維維、梁云亮、劉海松、陳偉光、劉增產、包惠利和劉玉萍等。本書雖然傾注了編者的心血,但由于水平有限,書中難免有疏漏之處,敬請諒解,如果遇到問題或有意見和建議,請與我們聯系,我們將全力提供幫助。
編 者
2016年11月
第1章初識PHP1
1.1PHP的來龍去脈1
1.1.1PHP的概念1
1.1.2PHP的發展歷程2
1.1.3PHP的優勢2
1.2PHP能干什么3
1.3PHP7的新特點4
1.4PHP常用開發工具6
1.4.1PHP代碼開發工具6
1.4.2網頁設計工具7
1.4.3文本編輯工具7
1.5高手甜點8
第2章PHP7服務器環境配置9
2.1PHP服務器概述9
2.2安裝PHP7前的準備工作10
2.2.1軟硬件環境10
2.2.2獲取PHP7安裝資源包10
2.3PHP7+IIS服務器安裝配置12
2.3.1IIS簡介及其安裝12
2.3.2PHP的安裝13
2.3.3虛擬目錄的設置16
2.4PHP7+Apache服務器的環境搭建17
2.4.1Apache簡介17
2.4.2關閉原有的網站服務器18
2.4.3安裝Apache18
2.4.4將PHP與Apache建立關聯19
2.5新手的福音——PHP環境的集成軟件20
2.6實戰演練——我的第一個PHP程序23
2.7高手甜點24
第3章PHP的基本語法25
3.1PHP標識符25
3.1.1短風格25
3.1.2script風格26
3.1.3ASP風格26
3.2編碼規范26
3.2.1什么是編碼規范26
3.2.2PHP中的編碼規范27
3.3常量28
3.3.1聲明和使用常量29
3.3.2內置常量29
3.4變量31
3.4.1PHP中的變量聲明31
3.4.2可變變量與變量的引用32
3.4.3變量作用域33
3.4.4變量的銷毀36
3.5數據類型37
3.5.1什么是類型37
3.5.2整型38
3.5.3浮點型38
3.5.4布爾型38
3.5.5字符串型38
3.5.6數組型39
3.5.7對象型41
3.5.8NULL型42
3.5.9資源類型42
3.5.10數據類型之間的相互轉換42
3.6標量類型的聲明43
3.7運算符44
3.7.1算術運算符44
3.7.2字符串運算符45
3.7.3賦值運算符46
3.7.4比較運算符46
3.7.5邏輯運算符47
3.7.6按位運算符48
3.7.7否定控制運算符49
3.7.8錯誤控制運算符49
3.7.9三元運算符50
3.7.10運算符的優先級和結合規則50
3.8表達式50
3.9實戰演練——創建多維數組51
3.10高手甜點51
第4章PHP的語言結構53
4.1內置函數53
4.2自定義函數54
4.2.1自定義和調用函數54
4.2.2向函數傳遞參數值55
4.2.3向函數傳遞參數引用55
4.2.4從函數中返回值56
4.2.5對函數的引用57
4.2.6對函數取消引用58
4.3包含文件58
4.3.1require和include58
4.3.2include_once和require_once59
4.4流程控制60
4.4.1條件控制結構60
4.4.2循環控制結構65
4.5實戰演練1——條件分支結構綜合應用72
4.6實戰演練2——循環控制結構綜合應用73
4.7高手甜點74
第5章字符串和正則表達式75
5.1字符串的單引號和雙引號75
5.2字符串的連接符77
5.3字符串的基本操作78
5.3.1手動和自動轉義字符串中的字符78
5.3.2計算字符串的長度78
5.3.3字符串單詞統計79
5.3.4清理字符串中的空格80
5.3.5字符串的切分與組合80
5.3.6字符串子串的截取81
5.3.7字符串子串替換82
5.3.8字符串查找83
5.3.9大小寫轉換84
5.4什么是正則表達式85
5.5正則表達式語法規則85
5.6實戰演練——創建酒店系統在線訂房表90
5.7高手甜點93
第6章PHP數組94
6.1什么是數組94
6.2數組的類型95
6.2.1數字索引數組95
6.2.2關聯索引數組96
6.3PHP常量數組97
6.4數組構造97
6.4.1一維數組97
6.4.2多維數組97
6.5遍歷數組99
6.5.1遍歷一維數字索引數組99
6.5.2遍歷一維聯合索引數組100
6.5.3遍歷多維數組101
6.6數組排序102
6.6.1一維數組排序102
6.6.2多維數組排序104
6.7字符串與數組的轉換105
6.8向數組中添加和刪除元素106
6.8.1向數組中添加元素106
6.8.2從數組中刪除元素107
6.9查詢數組中指定元素109
6.10統計數組元素個數110
6.11刪除數組中的重復元素112
6.12調換數組中的鍵值和元素值113
6.13實戰演練——數組的序列化113
6.14高手甜點114
第7章時間和日期115
7.1系統時區設置115
7.1.1時區劃分115
7.1.2時區設置116
7.2PHP日期和時間函數116
7.2.1關于UNIX時間戳116
7.2.2獲取當前時間戳116
7.2.3獲取當前日期和時間117
7.2.4使用時間戳獲取日期信息118
7.2.5檢驗日期的有效性120
7.2.6輸出格式化時間戳的日期和時間121
7.2.7顯示本地化的日期和時間122
7.2.8將日期和時間解析為UNIX時間戳123
7.2.9日期和時間在PHP和MySQL數據格式之間的轉換124
7.3實戰演練1——比較兩個時間的大小124
7.4實戰演練2——實現倒計時功能125
7.5高手甜點126
第8章面向對象編程127
8.1類和對象的介紹127
8.2PHP中類的操作128
8.2.1類的聲明128
8.2.2成員屬性129
8.2.3成員方法129
8.2.4類的實例化130
8.2.5訪問類中的成員屬性和方法130
8.3構造方法和析構方法132
8.4訪問方法134
8.5類的繼承136
8.6高級特性137
8.6.1靜態屬性和方法137
8.6.2final類和方法138
8.7抽象類和接口139
8.7.1抽象類139
8.7.2接口140
8.8面向對象的多態性142
8.8.1通過繼承實現多態142
8.8.2通過接口實現多態144
8.9高手甜點145
第9章錯誤處理和異常處理146
9.1常見的錯誤和異常146
9.2錯誤處理150
9.2.1php.ini中的錯誤處理機制150
9.2.2應用DIE語句調試150
9.2.3自定義錯誤和錯誤觸發器151
9.2.4錯誤記錄154
9.3異常處理155
9.3.1異常的基本處理方法155
9.3.2自定義的異常處理器157
9.3.3處理多個異常159
9.3.4設置頂層異常處理器160
9.4實戰演練——處理異常或錯誤161
9.5高手甜點162
第10章PHP與Web頁面交互164
10.1使用動態內容164
10.2表單與PHP165
10.3表單設計166
10.3.1表單基本結構166
10.3.2文本框166
10.3.3選項框167
10.3.4單選按鈕169
10.3.5下拉列表170
10.3.6重置按鈕171
10.3.7提交按鈕172
10.4傳遞數據的兩種方法174
10.4.1用POST方式傳遞數據174
10.4.2用GET方式傳遞數據175
10.5PHP獲取表單傳遞數據的方法176
10.6PHP對URL傳遞的參數進行編碼176
10.7實戰演練——PHP與Web表單的綜合應用177
10.8高手甜點179
第11章文件與目錄操作181
11.1文件操作181
11.1.1文件數據的寫入181
11.1.2文件數據的讀取185
11.2目錄操作186
11.3文件的上傳191
11.4實戰演練——編寫文本類型的訪客計算器193
11.5高手甜點194
第12章圖形圖像處理195
12.1在PHP中加載GD庫195
12.2圖形圖像的典型應用案例197
12.2.1創建一個簡單的圖像197
12.2.2使用GD2函數在照片上添加文字199
12.2.3使用TrueType字體處理中文生成圖片200
12.3Jpgraph庫的使用202
12.3.1Jpgraph的安裝203
12.3.2Jpgraph的配置203
12.3.3制作柱形圖與折線圖統計圖203
12.3.4制作圓形統計圖205
12.4實戰演練——制作3D餅形統計圖207
12.5高手甜點208
第13章Cookie和會話管理210
13.1Cookie基本操作210
13.1.1什么是Cookie210
13.1.2創建Cookie211
13.1.3讀取Cookie211
13.1.4刪除Cookie212
13.2認識Session214
13.2.1什么是Session214
13.2.2Session的基本功能214
13.2.3Cookie與Session214
13.2.4在Cookie或URL中存儲SessionID215
13.3會話管理215
13.3.1創建會話215
13.3.2注冊會話變量216
13.3.3使用會話變量216
13.3.4注銷和銷毀會話變量217
13.4實戰演練——會話管理的綜合應用218
13.5高手甜點219
第14章MySQL數據庫基礎221
14.1什么是MySQL221
14.1.1客戶機/服務器結構221
14.1.2MySQL版本222
14.1.3MySQL優勢223
14.2啟動服務并登錄MySQL數據庫223
14.2.1啟動MySQL服務223
14.2.2登錄MySQL數據庫224
14.2.3配置Path變量226
14.3MySQL數據庫的基本操作228
14.3.1創建數據庫228
14.3.2查看數據庫228
14.3.3刪除數據庫229
14.3.4選擇數據庫229
14.4MySQL數據表的基本操作230
14.4.1創建數據表230
14.4.2查看數據表231
14.4.3修改數據表233
14.4.4刪除數據表234
14.5MySQL語句的操作234
14.5.1插入記錄234
14.5.2查詢記錄235
14.5.3修改記錄235
14.5.4刪除記錄236
14.6MySQL數據庫的備份與還原236
14.6.1數據備份236
14.6.2數據還原243
14.7高手甜點245
第15章PHP操作MySQL數據庫247
15.1PHP訪問MySQL數據庫的一般步驟247
15.2連接數據庫前的準備工作248
15.3訪問數據庫249
15.3.1使用mysqli_connect()函數連接MySQL服務器249
15.3.2使用mysqli_select_db()函數更改默認的數據庫250
15.3.3使用mysqli_close()函數關閉MySQL連接251
15.3.4使用mysqli_query()函數執行SQL語句251
15.3.5獲取查詢結果集中的記錄數252
15.3.6獲取結果集中的一條記錄作為枚舉數組253
15.3.7獲取結果集中的記錄作為關聯數組254
15.3.8獲取結果集中的記錄作為對象255
15.3.9使用mysqli_fetch_array()函數獲取結果集記錄255
15.3.10使用mysqli_free_result()函數釋放資源256
15.4實戰演練1——PHP操作數據庫256
15.5實戰演練2——使用insert語句動態添加用戶信息258
15.6實戰演練3—使用select語句查詢數據信息260
15.7高手甜點262
第16章PDO數據庫抽象類庫263
16.1PDO概述263
16.2PDO的安裝264
16.3使用PDO操作MySQL264
16.3.1連接MySQL數據庫的方法265
16.3.2使用PDO時的trycatch錯誤處理結構265
16.3.3使用PDO執行SQL的選擇語句268
16.3.4使用PDO獲取返回數據的類方法268
16.3.5使用PDO執行SQL的添加、修改語句271
16.3.6使用PDO執行SQL的刪除語句271
16.4實戰演練——PDO的prepare表述272
16.5高手甜點274
第17章JavaScript編程基礎275
17.1認識JavaScript275
17.1.1什么是JavaScript275
17.1.2JavaScript的特點276
17.2JavaScript在HTML中的使用277
17.2.1在HTML網頁頭中嵌入JavaScript代碼277
17.2.2在HTML網頁中嵌入JavaScript代碼278
17.2.3在HTML網頁的元素事件中嵌入JavaScript代碼279
17.2.4在HTML中調用已經存在的JavaScript文件280
17.2.5通過JavaScript偽URL引入JavaScript腳本代碼281
17.3JavaScript的基本語法282
17.3.1執行順序282
17.3.2區分大小寫283
17.3.3分號與空格283
17.3.4對代碼行進行折行283
17.3.5注釋283
17.4JavaScript的數據結構285
17.4.1標識符285
17.4.2關鍵字286
17.4.3保留字286
17.4.4常量287
17.4.5變量287
17.5代碼中的數據類型289
17.5.1typeof運算符289
17.5.2Undefined類型291
17.5.3Null類型291
17.5.4Boolean類型292
17.5.5Number類型293
17.5.6String類型294
17.6條件判斷語句294
17.6.1if語句294
17.6.2if…else語句296
17.6.3switch語句297
17.7循環控制語句299
17.7.1while語句299
17.7.2do…while語句300
17.7.3for循環301
17.8在PHP中調用JavaScript代碼302
17.8.1驗證表單元素的值是否為空302
17.8.2實現即時驗證效果303
17.9實戰演練——制作樹形菜單306
17.10高手甜點312
第18章PHP與XML技術313
18.1XML概念313
18.2XML語法基礎315
18.2.1XML文檔的組成和聲明315
18.2.2XML元素介紹316
18.2.3實體引用319
18.2.4XML命名空間319
18.2.5XMLDTD320
18.2.6使用CDATA標記321
18.3將XML文檔轉換為HTML加以輸出321
18.4在PHP中創建XML文檔322
18.5使用SimpleXML擴展323
18.5.1創建SimpleXMLElement對象323
18.5.2訪問特定節點元素和屬性324
18.5.3添加XML元素和屬性325
18.6實戰演練——動態創建XML文檔326
18.7高手甜點327
第19章PHP與Ajax的綜合應用328
19.1Ajax概述328
19.1.1什么是Ajax328
19.1.2Ajax的關鍵元素331
19.1.3CSS與Ajax332
19.2Ajax快速入門332
19.2.1全面剖析XMLHttpRequest對象333
19.2.2發出Ajax請求335
19.2.3處理服務器響應336
19.3在PHP中應用Ajax技術338
19.4高手甜點343
第20章Smarty模板344
20.1MVC概述344
20.2什么是模板引擎345
20.3Smarty概述346
20.3.1什么是Smarty346
20.3.2Smarty與MVC346
20.4Smarty的安裝和配置347
20.4.1Smarty的下載和安裝347
20.4.2第一個Smarty程序347
20.5Smarty模板設計348
20.5.1Smarty模板文件348
20.5.2Smarty標識349
20.5.3Smarty變量351
20.5.4Smarty數組352
20.6Smarty中的流程控制語句353
20.7高手甜點355
第21章ZendFramework356
21.1什么是ZendFramework356
21.2ZendFramework的目錄結構357
21.3ZendFramework的安裝與使用357
21.3.1ZendFramework的安裝357
21.3.2創建一個新的ZendFramework應用358
21.4PHP與ZendFramework的基本操作360
21.4.1在ZendFramework應用中創建控制層文件361
21.4.2在ZendFramework的控制層文件中添加一個action361
21.4.3在ZendFramework中創建布局363
21.4.4在ZendFramework中的數據庫操作363
21.4.5在ZendFramework中創建表單364
21.5高手甜點366
第22章PHP+MySQL開發論壇實戰367
22.1需求分析367
22.1.1網站的需求分析367
22.1.2網站的功能模塊分析368
22.2數據庫分析368
22.2.1分析數據庫368
22.2.2創建數據表369
22.3論壇的代碼實現370
22.3.1數據庫連接相關文件370
22.3.2論壇主頁面375
22.3.3新用戶注冊頁面379
22.3.4論壇帖子的相關頁面382
22.3.5后臺管理系統的相關頁面391
第23章開發酒店管理系統網站417
23.1網站的需求分析417
23.2數據庫分析418
23.3酒店管理系統的實現420
23.3.1使用Yii框架的沙箱模式建立項目420
23.3.2開始goodone項目編程422
23.3.3構建message系統426
23.3.4構建product系統433
23.3.5構建order系統435
23.3.6構建customer系統436