PHP程序設計項目化教程(微課版)
臧金梅 郭甜甜
商品描述
本書采用項目化內容組織方式,通過一系列精心設計的項目案例,逐步引導讀者從PHP編程入門走向精通。具體項目包括啟程探索PHP世界、智能BMI計算與健身運動推薦系統、匯率計算器、學生成績計算器、文本內容過濾器、用戶註冊平臺、問卷統計工具、購物車系統、學生信息管理系統。項目內容全面涵蓋PHP語法基礎、流程控制、函數、文件和目錄操作、前後端交互等知識,旨在通過實際項目加深讀者對PHP編程技術的理解,提高應用能力。
本書在深入講解PHP編程技術的同時,特別強調了網絡應用安全措施的重要性,旨在幫助讀者構建功能強大且安全可靠的Web應用。
本書適合作為普通高等學校、職業院校計算機相關專業的教材,同時也適合作為PHP愛好者及相關技術人員的自學參考書。
作者簡介
臧金梅,山東信息職業技術學院教師,擁有15年專業教學經驗,主要研究方向為Web前端開發、計算機網絡等。參與編寫了5本高職規劃教材,1本為“十四五”職業教育國家規劃教材,參與建設了1門省級精品課程、2門省級精品資源共享課程、2門省級在線精品課程、1門一流核心課程(線下)。主持和參與各級課題十余項,發表多篇學術論文,獲省級職業教育成果獎二等獎一項。曾獲山東省第七屆“超星杯”高校青年教師教學比賽二等獎,“建行杯”山東省“互聯網+”大學生創新創業大賽金獎1項、銅獎1項。
目錄大綱
目 錄
模塊1 PHP基礎
項目1
啟程探索PHP世界—PHP編程入門 2
知識儲備 3
1.1 PHP簡介 3
1.1.1 什麼是PHP 3
1.1.2 PHP的發展歷史 3
1.1.3 PHP的語言特性 4
1.1.4 PHP的工作原理 5
1.2 PHP開發環境與工具 5
1.2.1 PHP開發環境 5
1.2.2 PHP集成開發環境 6
1.2.3 PHP開發工具 7
【素養提升】工具是為思維服務的 8
1.2.4 Visual Studio Code的安裝
配置 8
【素養提升】智能編程助手不是
萬能的 10
1.3 PHP的簡單語法 11
1.3.1 PHP的標記方式 11
1.3.2 PHP的註釋方式 12
1.3.3 PHP的數據輸出方式 12
1.3.4 字符串連接運算符 13
1.3.5 換行符的使用 13
【能力進階】PHP編程書寫規範 14
項目分析 14
項目實施 14
任務1-1 搭建PHP開發環境 14
任務1-2 創建PHP文件 15
任務1-3 編寫PHP代碼 15
項目實訓—輸出個人信息 17
項目小結 17
應用安全拓展 17
鞏固練習 18
項目2
智能BMI計算與健身運動推薦
系統—語法基礎 19
知識儲備 20
2.1 變量和常量 20
2.1.1 標識符 20
2.1.2 關鍵字 20
2.1.3 變量 21
【案例實踐2-1】輸出商品信息 23
【能力進階】編程命名規範 24
2.1.4 常量 24
【案例實踐2-2】輸出商品折扣
信息 25
2.2 標量數據類型 26
2.2.1 布爾型 26
2.2.2 整型 27
2.2.3 浮點型 27
2.2.4 字符串型 27
2.2.5 數據類型的檢測 30
2.3 運算符 31
2.3.1 運算符的分類 31
【能力進階】三目運算符嵌套 32
2.3.2 算術運算符 32
【案例實踐2-3】計算商品折扣
價格 33
2.3.3 賦值運算符 34
2.3.4 比較運算符 35
2.3.5 邏輯運算符 36
2.3.6 運算符的優先級 37
【案例實踐2-4】計算商品盈利 37
2.4 表達式 38
2.5 數據類型的轉換 39
2.5.1 自動類型轉換 39
2.5.2 強制類型轉換 40
項目分析 41
項目實施 41
任務2-1 計算BMI 41
任務2-2 實現健身運動推薦 42
項目實訓—圖書信息的定義及管理 43
項目小結 43
應用安全拓展 44
鞏固練習 46
項目3
匯率計算器—流程控制 47
知識儲備 48
3.1 流程控制簡述 48
3.2 分支結構 48
3.2.1 單分支結構 48
3.2.2 雙分支結構 50
3.2.3 分支結構的嵌套應用 50
【案例實踐3-1】兒童旅行費折扣
問題 51
3.2.4 多分支結構—if...elseif...else
語句 52
【案例實踐3-2】分時問候 54
【能力進階】深入理解分支結構中else
語句的含義 54
3.2.5 多分支結構—switch
語句 56
【案例實踐3-3】課余活動反饋 58
3.2.6 switch語句和if語句結合的
結構 59
3.3 循環結構 59
3.3.1 for循環結構 59
【案例實踐3-4】實現1~10的奇偶數
判斷 60
3.3.2 while循環結構 61
3.3.3 do…while循環結構 61
【素養提升】有趣的while和do…while
循環結構 62
3.3.4 循環嵌套 62
【案例實踐3-5】實現九九乘法表的
輸出 63
【素養提升】循環中的智慧:人生的
重復與成長 64
3.4 跳轉語句 64
3.4.1 break語句 64
3.4.2 continue語句 65
3.5 異常處理 65
3.5.1 錯誤類型和級別 65
3.5.2 異常處理方式 66
3.6 文件包含語句 67
3.6.1 include語句和require
語句 67
3.6.2 include_once語句和
require_once語句 68
項目分析 69
項目實施 69
任務3-1 一對一匯率計算 69
任務3-2 一對多匯率計算 71
項目實訓—輸出金字塔圖形 72
項目小結 72
應用安全拓展 73
鞏固練習 74
項目4
學生成績計算器—PHP
函數 76
知識儲備 77
4.1 初識函數 77
4.1.1 函數的概念 77
4.1.2 函數的優勢 77
4.1.3 函數的分類 78
4.2 自定義函數 78
4.2.1 函數的定義 79
【案例實踐4-1】使用函數創建
表格 79
【素養提升】函數使用規範 80
4.2.2 函數的參數 80
4.2.3 函數的調用 82
【案例實踐4-2】精確判斷特定年月的
天數 84
4.2.4 變量的作用域 85
【能力進階】匿名函數 86
4.3 處理GET請求和預定義
變量$_GET 87
4.4 預定義函數 87
4.4.1 變量函數 87
【案例實踐4-3】數據驗證與類型
處理 89
4.4.2 數學函數 90
【案例實踐4-4】數學運算工具箱 90
4.4.3 時間和日期函數 92
【案例實踐4-5】計算度過的時間 93
【素養提升】自主獲取信息 94
項目分析 95
項目實施 95
任務4-1 構建成績輸入與驗證
界面 95
任務4-2 計算加權總分 95
任務4-3 評估成績等級 96
任務4-4 計算學生成績 96
項目實訓—日期差計算器 97
項目小結 97
應用安全拓展 98
鞏固練習 99
項目5
文本內容過濾器—數據
處理 101
知識儲備 102
5.1 數組 102
5.1.1 初識數組 102
5.1.2 數組的創建和初始化 103
5.1.3 數組的遍歷 104
【案例實踐5-1】計算學生平均分 106
5.1.4 常用的數組函數 106
【案例實踐5-2】獲取學生分數的
各種統計信息 107
【案例實踐5-3】使用指針操作
數組 109
5.2 字符串 113
5.2.1 字符串的輸出 113
5.2.2 常用的字符串操作函數 113
【能力進階】其他截取函數 114
【能力進階】其他查找函數 114
【能力進階】其他去除空白函數 116
【案例實踐5-4】通過文件路徑獲取
文件基本信息 116
【案例實踐5-5】格式化表單提交的數據 117
【案例實踐5-6】隱私保護:格式化
用戶提交的手機號 119
【素養提升】培養隱私保護意識,構建
和諧數字社會 119
5.2.3 字符串與數組 120
【案例實踐5-7】判斷IP地址
格式 121
項目分析 122
項目實施 122
任務5-1 定義敏感詞庫 122
任務5-2 實現內容過濾邏輯 122
任務5-3 測試並展示過濾效果 123
項目實訓—敏感詞過濾與檢測 123
項目小結 123
應用安全拓展 124
鞏固練習 125
模塊2 PHP進階
項目6
用戶註冊平臺—前後端數據
交互 128
知識儲備 129
6.1 表單基礎與數據交互 129
6.1.1 創建表單 129
6.1.2 添加表單控件 129
6.1.3 提交表單數據 131
6.1.4 獲取表單提交的數據 132
【案例實踐6-1】實現簡單的用戶
登錄和驗證 134
【能力進階】$_SERVER超全局
變量 135
【能力進階】判斷表單是否被
提交 135
【能力進階】深入理解GET與
POST 136
6.1.5 處理表單數組數據 136
【案例實踐6-2】學生課外活動選擇
表單 137
6.1.6 查詢字符串與URL參數
傳遞 138
6.1.7 使用查詢字符串實現前後端
數據交互 139
【案例實踐6-3】動態展示新聞
列表 139
【能力進階】對GET請求與查詢
字符串的理解 140
6.2 HTTP基礎 141
6.2.1 HTTP/HTTPS簡介 141
6.2.2 HTTP Headers的組成 142
6.2.3 基本信息 142
6.2.4 請求報文 144
【案例實踐6-4】查看請求報文 146
6.2.5 響應報文 147
【能力進階】自定義響應頭 148
6.3 Cookie和Session技術 149
6.3.1 Cookie技術 149
【案例實踐6-5】 實現用戶自動
登錄 152
6.3.2 Session技術 153
【案例實踐6-6】 通過Session
驗證登錄信息 155
6.3.3 Cookie和Session的
區別 157
【素養提升】PHP中的前後端數據
交互與用戶隱私保護 158
6.4 正則表達式 158
6.4.1 正則表達式簡介 158
6.4.2 正則表達式的組成 158
6.4.3 正則表達式的用法 158
6.4.4 正則表達式在PHP中的
應用 161
【案例實踐6-7】提取電子郵件
地址 163
項目分析 164
項目實施 164
任務6-1 實現用戶註冊界面 164
任務6-2 實現用戶數據有效性
檢查 165
項目實訓—用戶登錄與登出 166
項目小結 167
應用安全拓展 168
鞏固練習 170
項目7
問卷統計工具—文件和目錄
操作 171
知識儲備 172
7.1 目錄操作 172
7.1.1 目錄基本操作 172
【案例實踐7-1】使用scandir()函數
遍歷指定目錄 174
7.1.2 目錄與路徑解析 174
【案例實踐7-2】解析路徑基本
信息 175
7.1.3 目錄句柄 176
【案例實踐7-3】使用目錄句柄函數
遍歷指定目錄 177
7.2 文件操作 178
7.2.1 文件基本操作 178
7.2.2 文件讀寫操作 180
7.2.3 文件的上傳 183
【案例實踐7-4】實現單個文件
上傳 185
【能力進階】多文件上傳技巧 186
【素養提升】精確操作文件和目錄 187
項目分析 187
項目實施 187
任務7-1 實現問卷統計工具
界面 187
任務7-2 設計統計問卷選項 188
項目實訓—上傳個人簡歷和照片 191
項目小結 191
應用安全拓展 192
鞏固練習 193
項目8
購物車系統—面向對象程序
設計 195
知識儲備 196
8.1 面向對象 196
8.1.1 面向過程和面向對象的
對比 196
8.1.2 面向對象程序設計的優勢 196
8.1.3 面向對象的核心概念 197
8.2 類和對象 197
8.2.1 類的定義 198
8.2.2 訪問控制修飾符 198
8.2.3 類的實例化 199
8.2.4 訪問類的成員 200
【能力進階】為何在類方法中使用return
語句而非echo語句 200
【案例實踐8-1】類的實例化及類
成員的訪問 201
8.2.5 對象的比較 202
8.3 魔術方法 203
8.3.1 常見的魔術方法 203
8.3.2 構造方法 203
8.3.3 析構方法 204
【案例實踐8-2】構造方法和析構方法
的應用 205
8.4 類常量和靜態成員 206
8.4.1 類常量 206
8.4.2 靜態成員 207
【能力進階】類常量和靜態屬性的
應用場景 208
【能力進階】self和static
關鍵字 208
8.5 面向對象的特性 208
8.5.1 封裝 208
8.5.2 繼承 211
【能力進階】認識parent關鍵字 212
【能力進階】認識final關鍵字 212
8.5.3 多態 213
【案例實踐8-3】實現學校運動員參賽
得獎統計 214
8.6 抽象類和接口 216
8.6.1 抽象類 216
8.6.2 接口 217
【案例實踐8-4】實現常見交通工具的
應用 218
【素養提升】從面向對象程序設計到職
業素養:技術提升與團隊協作的
雙向進階 219
項目分析 220
項目實施 220
任務8-1 定義商品類及其子類 220
任務8-2 定義購物車類 222
任務8-3 實現前端界面 223
任務8-4 實現後端邏輯 225
項目實訓—常見圖形的周長和面積
計算器 226
項目小結 227
應用安全拓展 227
鞏固練習 228
項目9
學生信息管理系統—使用PHP操作MySQL數據庫 230
知識儲備 231
9.1 MySQL概述 231
9.1.1 MySQL簡介 231
9.1.2 MySQL的特點 231
9.1.3 安裝MySQL 232
9.1.4 啟動MySQL 232
9.1.5 安裝MySQL可視化工具 232
9.2 MySQL的基本操作 233
9.2.1 MySQL數據庫操作 233
9.2.2 MySQL數據表操作 234
9.2.3 MySQL數據操作 235
9.3 PHP的數據庫擴展 235
9.3.1 MySQLi擴展 235
9.3.2 PDO擴展 236
9.3.3 其他數據庫擴展 236
9.4 使用PHP操作MySQL
數據庫 236
9.4.1 MySQLi擴展的用法 236
9.4.2 MySQLi擴展的核心函數 236
9.4.3 連接MySQL數據庫 237
【能力進階】封裝數據庫連接
代碼 238
9.4.4 選擇MySQL數據庫 238
9.4.5 執行SQL語句 238
【案例實踐9-1】實現學生註冊
功能 239
9.4.6 預處理操作 240
【案例實踐9-2】添加預處理實現學生
註冊功能 242
9.4.7 處理結果集 243
【案例實踐9-3】解決用戶名沖突
問題 244
【案例實踐9-4】實現學生登錄
功能 246
9.4.8 釋放結果集 247
9.4.9 斷開數據庫連接 247
【素養提升】數據安全意識的培養與
加強 248
項目分析 248
項目實施 248
任務9-1 設計數據庫 248
任務9-2 設計數據連接 249
任務9-3 設計登錄頁面 249
任務9-4 設置操作權限 250
任務9-5 設計註冊頁面 251
任務9-6 添加數據 253
任務9-7 瀏覽數據 254
任務9-8 編輯數據 255
任務9-9 刪除數據 258
任務9-10 查詢數據 259
項目實訓—圖書管理系統 260
項目小結 262
應用安全拓展 262
鞏固練習 263

