Web應用開發(fā)技術是網站、App等互聯(lián)網產品開發(fā)中不可或缺的后端組成部分。本書基于以高性能著稱的PHP Phalcon框架,介紹后端開發(fā)涉及的關鍵技術。全書共分12章:第1章介紹開發(fā)部署并預覽后端項目結構;第2章介紹后端開發(fā)所需的網絡原理基礎知識;第3章介紹Phalcon框架依賴注入和事件驅動設計思想;第4~9章為后端開發(fā)核心,包含應用入口、路由原理、MVC以及權限控制;第10~12章介紹安全、緩存和多人合作等優(yōu)化技術。每章配有習題,以便有興趣的讀者拓展思考。本書適合作為高等院校數(shù)字媒體技術、軟件、計算機相關專業(yè)的本科生進階教材,也適合作為感興趣的開發(fā)人員的實踐參考用書。
教學內容與當前國家、社會就業(yè)市場需求緊密結合;
② 突出實用性,強調技能,面向問題,面向應用;
③ 應用性和概念性、知識性內容相結合,且均與時俱進,具有先進性;
④ 知識內容模塊化組織,可供不同院校根據專業(yè)需求進行選用,具有良好的教學適用性,文理兼顧;
⑤ 在教材的編寫風格上,將教材的嚴肅性和學生的閱讀興趣相結合,讓讀者能融入案例所設定的人物角色,更容易理解人物角色的工作思路。
Web應用開發(fā)技術是實現(xiàn)網站、App等互聯(lián)網產品開發(fā)的后端技術,提供數(shù)據請求、處理、存儲等業(yè)務。絕大多數(shù)主流的編程語言都可以用于Web應用開發(fā),然而PHP仍然是熱門選擇之一。它的突出優(yōu)勢在于:快速入門、直觀調試、無須編譯、社區(qū)活躍、資源豐富、開發(fā)高效,可用于小型創(chuàng)業(yè)項目,亦可用于大型企業(yè)級項目。眾多優(yōu)秀的開發(fā)框架使PHP完全具備大型項目開發(fā)的需求。開發(fā)框架在提供開發(fā)便利的同時也一定程度上損失了運行效率,雖然這種損失微乎其微,但對于高并發(fā)的項目,優(yōu)化運行效率是重中之重。因此,尋找一個合適的框架來解決Web項目開發(fā)中的MVC分離、路由分發(fā)、權限控制、數(shù)據緩存等基礎問題,一直是項目組考慮的重點。衡量一個框架的優(yōu)劣,有很多因素,如性能、開發(fā)效率、架構思想、社區(qū)文檔成熟度、團隊成員知識組成、開源貢獻者質量等。多項測評表明,Phalcon因為其C語言的底層優(yōu)勢,在性能方面一直是佼佼者。然而讓我們在多個線上項目選擇它的原因卻不是性能,而是它的架構思想。其核心的依賴注入的服務管理思想能夠讓我們在項目的任何位置高效調用各類服務,其事件驅動的插件機制提供了在框架中自由擴展的可能,以及其繼承和發(fā)揚了Zend Framework的代碼結構讓我們倍感親切。
本書是在哈爾濱工業(yè)大學ComingX團隊多位成員共同努力下完成的,由景東任主編。參與本書編寫的還有:胡明明、陳文忠、謝佳宏、羅煒杰、卓興良、郭巧馳。在本書的編寫過程中,我們深度閱讀了Phalcon的源碼,從源碼層面解釋各組件功能背后的原理,并配合流程圖將原理直觀化。我們希望本書能為讀者的開發(fā)實踐提供參考,因此著重結合以往的開發(fā)經驗來組織內容編寫,并配合實際代碼支撐功能講解。
書中難免謬誤,若蒙讀者諸君不吝賜教,將不勝感激。歡迎發(fā)送郵件至jingdongemail@ gmail.com。本書相關的勘誤表可通過訪問網址查閱:https://github.com/comingx/phalcon-book/
blob/master/corrigenda。
感謝李松林老師、王占清編輯對本書出版工作的付出。感謝我的家人在編寫過程中給我的支持,特別感謝我的五歲的阿杰給我?guī)淼臍g樂和幸福,激勵我更加努力地工作。
景東,哈爾濱工業(yè)大學媒體技術與藝術系教師,美國亞利桑那大學MIS訪問學者,主講計算機網絡、移動應用開發(fā)和數(shù)據分析等課程,主持了國家社科基金、教育部人文社科基金、省社科基金項目,研究方向為社會媒體分析。在哈工大組織的可明ComingX開發(fā)團隊,有十余年的開發(fā)經驗,開發(fā)并運營著許多線上創(chuàng)業(yè)項目,曾獲得谷歌頒發(fā)的2017年Android全國大學生移動互聯(lián)網創(chuàng)新挑戰(zhàn)賽總決賽金獎、教育部頒發(fā)的全國大學生廣告藝術大賽交互廣告組一等獎,團隊畢業(yè)的學生主要就職于阿里、百度、騰訊等一線互聯(lián)網公司。
第1章 Phalcon框架起步 1
1.1 框架之談 1
1.1.1
是否需要框架 1
1.1.2
為什么選擇Phalcon 2
1.2 快速起步 3
1.2.1
Phalcon開發(fā)環(huán)境的配置 3
1.2.2
第一個Phalcon項目 6
1.3
Phalcon開發(fā)工具 14
1.4
PhpStorm配置 16
小結 16
習題 16
第2章 網絡通信與HTTP協(xié)議 17
2.1 計算機網絡體系 17
2.1.1
OSI參考模型 18
2.1.2
TCP/IP模型 19
2.1.3
TCP/IP模型的封裝與解封 21
2.2
TCP協(xié)議 23
2.2.1
TCP段格式 23
2.2.2
TCP Socket 25
2.2.3
TCP傳輸 26
2.3
HTTP協(xié)議 28
2.3.1
HTTP請求報文 28
2.3.2
HTTP響應報文 30
2.4
Cookie與Session 31
2.5
HTTPS 32
2.5.1
HTTPS的相關概念 33
2.5.2
TLS協(xié)議的原理 34
小結 36
習題 36
第3章 理解Phalcon的設計思想 37
3.1
Phalcon框架結構 37
3.2 依賴注入 38
3.2.1
依賴注入的原理和簡易
實現(xiàn) 38
3.2.2
Phalcon中的DI 42
3.3 事件驅動 45
3.3.1
何為事件驅動架構 45
3.3.2
事件驅動架構的實現(xiàn)原理 46
3.3.3
Phalcon事件驅動機制
的應用 47
3.3.4
自定義可觸發(fā)事件的組件 50
小結 52
習題 53
第4章 應用 54
4.1 引導程序Bootstrap
54
4.2
Application工作流 58
小結 60
習題 60
第5章 路由與URL 61
5.1 路由工作原理 61
5.2 定義路由 63
5.3
URL 67
小結 68
習題 68
第6章 調度器與控制器 69
6.1 循環(huán)調度 69
6.2 控制器基本用法 69
6.3 調度器插件 73
小結 75
習題 75
第7章 視圖 77
7.1 注冊視圖服務 77
7.2 視圖渲染級別 78
7.3 視圖路徑 79
7.4 控制器向視圖傳值 80
7.5 視圖中獲取服務 81
7.6 視圖工作原理 81
7.7
Volt引擎 83
小結 88
習題 89
第8章 模型 90
8.1 數(shù)據表與Model類 90
8.2
Model數(shù)據查詢 91
8.2.1
Model基本數(shù)據查詢 91
8.2.2
Model查詢參數(shù) 92
8.2.3
Model面向對象查詢 94
8.3
Model數(shù)據創(chuàng)建和更新 95
8.4
Model數(shù)據刪除 97
8.5 原生SQL和PHQL 97
8.5.1
使用原生SQL 97
8.5.2
使用PHQL 98
8.6
Model事務機制 99
8.6.1
自定義事務 100
8.6.2
模型的事務 100
8.7
Model關系 103
8.7.1
三大關聯(lián)關系 103
8.7.2
關聯(lián)模型數(shù)據查詢 108
8.7.3
關聯(lián)模型數(shù)據創(chuàng)建和更新 109
8.7.4
關聯(lián)模型數(shù)據刪除 109
8.8
Model事件和事件管理器 110
8.8.1
Model事件 110
8.8.2
使用自定義的事件管理器 111
8.9
Model連接多個數(shù)據庫 112
8.10
分析SQL語句的執(zhí)行時間 113
8.11
Model獲取DI容器內的服務 114
小結 114
習題 115
第9章 訪問控制列表 116
9.1
ACL實現(xiàn)原理 116
9.2
Phalcon\ACL的基本方法 117
9.3 靜態(tài)ACL的實現(xiàn) 119
9.4 動態(tài)ACL的實現(xiàn) 123
小結 124
習題 125
第10章 網站安全 126
10.1
使用HTTPS 126
10.2
跨站請求偽造 128
10.2.1
攻擊原理 128
10.2.2
防御 129
10.3
XSS攻擊 129
10.3.1
XSS攻擊原理 130
10.3.2
防御 130
10.4
SQL注入 131
10.4.1
SQL注入原理 131
10.4.2
防御 132
10.5
拒絕服務攻擊 133
10.6
服務器文件權限管理 134
10.6.1
文件權限管理的目的和原理 134
10.6.2
Linux文件權限操作方法 135
10.7
資源ID保護 136
10.8
文件上傳安全 136
10.8.1
文件上傳漏洞 136
10.8.2
防御 137
小結 137
習題 138
第11章 緩存 139
11.1
緩存的場景分析 139
11.2
Phalcon緩存 139
11.2.1
Phalcon緩存簡介 139
11.2.2
Phalcon緩存的使用 141
11.2.3
Phalcon緩存操作 143
11.3
模型層緩存 145
11.4
控制層緩存 146
11.5
視圖層緩存 148
11.5.1
視圖層緩存 148
11.5.2
全站靜態(tài) 149
11.6
緩存清除 149
小結 151
習題 151
第12章 多人合作的開發(fā)架構 152
12.1
多模塊的開發(fā)模式 152
12.1.1
如何分割模塊 152
12.1.2
Phalcon多模塊項目 153
12.1.3
Phalcon模塊之間調用 156
12.1.4
多模塊的ACL實現(xiàn) 157
12.2
多站點跨語言的開發(fā)模式 158
12.3
基于Git的代碼管理 161
12.3.1
Git的常用操作 161
12.3.2
分支的創(chuàng)建與管理 164
12.3.3
GitHub的使用 165
12.4
核心代碼保護 168
小結 169
習題 170