PHP核心技術與最佳實踐(第2版)


PHP核心技術與最佳實踐(第2版)

1 面向對象思想的核心概念

1.1 面向對象的“形”與“本”

1.1.1 對象的“形”
1.1.2 對象的“本”
1.1.3 對象與數組
1.1.4 對象與類

1.2 魔術方法的應用

1.2.1 __set和__get方法
1.2.2 __call和__callStatic方法
1.2.3 __toString方法和__debugInfo方法

1.3 命名空間與自動加載

1.3.1 理解命名空間
1.3.2 自動加載

1.4 繼承與多態

1.4.1 類的組合與繼承
1.4.2 各種語言中的多態

1.5 面向接口編程

1.5.1 接口的作用
1.5.2 對PHP接口的思考

1.6 反射

1.6.1 如何使用反射API
1.6.2 反射有什么作用

1.7 異常和錯誤處理

1.7.1 如何使用異常處理機制
1.7.2 怎樣看PHP的異常
1.7.3 PHP中的錯誤級別
1.7.4 PHP中的錯誤處理機制
1.7.5 PHP7對異常機制的改進

1.8 本章小結

2 面向對象的設計原則

2.1 面向對象設計的五大原則

2.1.1 單一職責原則
2.1.2 接口隔離原則
2.1.3 開放-封閉原則
2.1.4 替換原則
2.1.5 依賴倒置原則

2.2 一個面向對象留言本的實例

2.3 面向對象的思考

2.4 本章小結

3 PHP網絡技術及應用

3.1 HTTP協議詳解

3.1.1 HTTP協議與HTTP/2協議
3.1.2 HTTP協議如何工作
3.1.3 HTTP應用:模擬灌水機器人
3.1.4 垃圾信息防御措施

3.2 抓包工具

3.2.1 抓包工具分類
3.2.2 Fiddler功能與原理
3.2.3 安裝Fiddler
3.2.4 Fiddler基本界面
3.2.5 使用Fiddler進行HTTP斷點調試

3.3 Socket進程通信機制及應用

3.3.1 進程通信相關概念
3.3.2 Socket演示:實現服務器端與客戶端的交互
3.3.3 使用wireshar分析TCP/IP數據包
3.3.4 Socket函數原型
3.3.5 PHP中的Socket函數
3.3.6 Socket交互應用:使用Socket抓取數據

3.4 cURL工具及應用

3.4.1 建立cURL請求的基本步驟
3.4.2 檢查cURL錯誤和獲取返回信息
3.4.3 在cURL中偽造頭信息
3.4.4 在cURL中用POST方法發送數據
3.4.5 使用cURL實現簡單的文件上傳服務
3.4.6 cURL批處理
3.4.7 cURL設置項

3.5 簡單郵件傳輸協議SMTP

3.5.1 SMTP協議如何工作
3.5.2 SMTP協議常用命令
3.5.3 SMTP協議應用:使用Socket發送郵件

3.6 WebService的前世今生

3.6.1 WebService簡介
3.6.2 Web服務的實現模式
3.6.3 簡單對象訪問協議SOAP
3.6.4 調試工具soapUI

3.7 Cookie詳解

3.7.1 Cookie的基本概念及設置
3.7.2 PHP和JavaScript對Cookie的操作
3.7.3 Cookie存儲機制及應用
3.7.4 Cookie跨域與P3P、CORS協議
3.7.5 本地存儲localStorage

3.8 Session詳解

3.8.1 Session的基本概念及設置
3.8.2 Session的工作原理
3.8.3 Session入庫
3.8.4 集群環境下的Session處理
3.8.5 Cookie與Session問答

3.9 本章小結

4 RPC與服務治理的概念

4.1 理解RPC

4.1.1 RPC的原理
4.1.2 RPC的組成元素

4.2 HPROSE的介紹

4.3 何為服務治理

4.4 服務發現與服務注冊

4.4.1 Paxos協議
4.4.2 ZooKeeper的介紹與安裝
4.4.3 深入了解ZooKeeper
4.4.4 ZooKeeper的應用
4.4.5 etcd的介紹
4.4.6 在PHP中使用etcd參與服務治理

4.5 高性能網絡庫

4.6 微服務概念簡介

4.7 本章小結

5 PHP與數據庫基礎

5.1 什么是PDO

5.1.1 PDO預定義類
5.1.2 如何使用PDO
5.1.3 PDO參數綁定與預編譯
5.1.4 PDO事務處理
5.1.5 PDO的效率問題

5.2 數據庫應用優化

5.2.1 索引與性能分析
5.2.2 服務器和配置的優化
5.2.3 MySQL瓶頸及應對措施

5.3 數據庫設計

5.3.1 范式與反范式
5.3.2 數據庫分區
5.3.3 分表的應用

5.4 MySQL的高級應用

5.4.1 MySQL視圖
5.4.2 MySQL存儲過程和事件調度
5.4.3 用MySQL模擬消息隊列
5.4.4 SQL注入漏洞與防范
5.4.5 MySQL全文搜索與Elasticsearch

5.5 數據庫鎖與事務

5.5.1 數據庫鎖
5.5.2 數據庫事務
5.5.3 分布式事務

5.6 數據庫中間件

5.6.1 中間件的介紹
5.6.2 數據庫中間件的原理與實現

5.7 本章小結

6 PHP框架實現原理

6.1 MVC模式

6.2 PHP框架Lonicera 0.1

6.2.1 實現bootstrap
6.2.2 路由器層的實現
6.2.3 數據模型
6.2.4 視圖層實現
6.2.5 對框架的初步改進

6.3 Lonicera 0.2框架增強

6.3.1 引入異常機制
6.3.2 攔截器和插件的原理與實現
6.3.3 Request增強與安全防御

6.4 Lonicera框架0.3版實現

6.4.1 composer的介紹與安裝
6.4.2 composer的類加載機制
6.4.3 使用composer來重構框架
6.4.4 基於composer的Model增強
6.4.5 控制反轉與依賴注入

6.5 本章小結

7 PHP擴展開發

7.1 為什么要開發PHP擴展

7.2 搭建PHP擴展框架

7.2.1 PHP源代碼目錄
7.2.2 ext_skel工具
7.2.3 Windows平台環境配置
7.2.4 Linux平台環境配置
7.2.5 PHP的生命周期

7.3 PHP內核中的變量

7.3.1 PHP變量在內核中的存儲方式
7.3.2 PHP內核變量訪問宏
7.3.3 引用計數器與寫時復制

7.4 PHP內核中的HashTable分析

7.4.1 PHP內核HashTable的數據結構
7.4.2 HashTable的代碼實現

7.5 Zend API詳解與擴展編寫

7.5.1 什么是Zend引擎
7.5.2 Zend引擎內存管理
7.5.3 PHP擴展的架構
7.5.4 接收用戶傳遞的參數
7.5.5 在PHP擴展中創建變量
7.5.6 在PHP擴展中為變量賦值
7.5.7 錯誤和輸出API
7.5.8 運行時信息函數
7.5.9 調用用戶自定義函數
7.5.10 PHP配置項
7.5.11 創建常量的宏
7.5.12 對象創建與操作

7.6 唯一ID生成擴展實現

7.6.1 snowflake算法
7.6.2 自旋鎖原理
7.6.3 擴展的實現

7.7 本章小結

8 緩存詳解

8.1 認識緩存

8.1.1 為什么使用緩存
8.1.2 命中率
8.1.3 緩存更新策略
8.1.4 緩存最大數據量

8.2 文件緩存

8.2.1 文件緩存機制
8.2.2 文件緩存開源產品Secache

8.3 Opcode緩存

8.4 客戶端緩存

8.4.1 客戶端緩存規則
8.4.2 HTTP協議中的緩存使用
8.4.3 HTTP緩存實例
8.4.4 HTML 5中的Application Cache

8.5 Web服務器緩存

8.5.1 Apache緩存
8.5.2 Nginx緩存

8.6 本章小結

9 Memcached使用與實踐

9.1 為什么要用Memcached

9.2 Memcached的安裝及使用

9.2.1 安裝Memcached服務器
9.2.2 安裝Memcached客戶端
9.2.3 使用memcache擴展訪問Memcached服務器
9.2.4 使用Memcached加速Web應用

9.3 深入了解Memcached

9.3.1 Memcached如何支持高並發
9.3.2 使用Slab分配算法保存數據
9.3.3 刪除過期item
9.3.4 使用LRU算法淘汰數據
9.3.5 Memcached多線程模型

9.4 Memcached分布式布置方案

9.4.1 普通Hash分布
9.4.2 一致性Hash分布
9.4.3 一致性Hash分布算法實例

9.5 本章小結

10 Redis使用與實踐

10.1 Redis的安裝及使用

10.1.1 Redis安裝步驟
10.1.2 修改Redis配置文件
10.1.3 運行Redis服務器
10.1.4 key相關命令
10.1.5 Redis支持的數據類型
10.1.6 Redis排序命令詳解

10.2 事務處理

10.2.1 事務處理原理
10.2.2 事務處理實現

10.3 持久化

10.3.1 內存快照
10.3.2 日志追加

10.4 主從同步

10.4.1 Redis主從同步原理
10.4.2 Slave端的工作流程
10.4.3 Master端的工作流程

10.5 Redis集群實戰

10.5.1 Redis集群搭建
10.5.2 Redis集群原理

10.6 擴展庫phpredis安裝及使用

10.7 Redis應用實踐

10.7.1 使用消息隊列發布微博
10.7.2 Redis替代文件存儲Session

10.8 深入了解Redis內核

10.8.1 內存淘汰
10.8.2 對象引用計數器
10.8.3 自動關閉超時連接
10.8.4 清除過期數據

10.9 本章小結

11 高性能網站架構方案

11.1 如何優化網站響應時間

11.1.1 吞吐率
11.1.2 壓力測試
11.1.3 持久連接

11.2 MySQL響應速度提高方案:HandlerSocket

11.2.1 HandlerSocket工作原理
11.2.2 HandlerSocket安裝和配置
11.2.3 PHP-HandlerSocket性能測試

11.3 MySQL穩定性提高方案:主從復制

11.3.1 主從復制工作原理
11.3.2 主從復制配置
11.3.3 連接主從服務器

11.4 Web應用加速方案:Varnish

11.4.1 傳統代理與反向代理
11.4.2 Varnish安裝和配置
11.4.3 Varnish性能測試
11.4.4 修改緩存規則
11.4.5 監控Varnish運行狀態

11.5 異步計算方案:Gearman

11.5.1 Gearman工作原理
11.5.2 安裝Gearman和PHP擴展
11.5.3 使用Gearman異步發送郵件

11.6 本章小結

12 代碼調試和測試

12.1 調試PHP代碼

12.1.1 PHP調試函數
12.1.2 斷點調試與變量跟蹤工具Xdebug
12.1.3 phpdbg的使用介紹
12.1.4 使用strace來跟蹤定位PHP程序

12.2 前端調試

12.2.1 Firebug調試API
12.2.2 使用Firebug調試DOM結構
12.2.3 使用Firebug進行遠程調試

12.3 日志管理

12.3.1 PHP日志
12.3.2 Apache/Nginx服務器日志
12.3.3 MySQL日志

12.4 代碼性能測試技術

12.4.1 時間點測試
12.4.2 文件查看工具WinCacheGrind
12.4.3 性能測試注意事項

12.5 單元測試

12.5.1 單元測試框架PHPUnit的安裝
12.5.2 初步使用PHPUnit進行單元測試
12.5.3 PHPUnit中的斷言函數
12.5.4 PHPUnit常用模板方法
12.5.5 PHPUnit常用注解

12.6 壓力測試

12.6.1 使用JMeter壓力測試HTTP
12.6.2 壓力測試MySQL
12.6.3 JMeter+Badboy組合測試

12.7 本章小結

13 Hash算法與數據庫實現

13.1 Hash函數

13.2 Hash算法

13.2.1 直接取余法
13.2.2 乘積取整法
13.2.3 經典Hash算法Times33

13.3 Hash表

13.3.1 Hash表結構
13.3.2 使用PHP實現Hash表
13.3.3 Hash表沖突
13.3.4 拉鏈法解決沖突

13.4 一個小型數據庫的實現

13.4.1 pack函數的用法
13.4.2 unpack函數的用法
13.4.3 索引文件和數據文件
13.4.4 數據庫接口方法
13.4.5 源代碼解析
13.4.6 測試代碼

13.5 本章小結

思維導圖

PHP核心技術與最佳實踐(第2版)

防止博客圖床圖片失效,防止圖片源站外鏈:

http://www.processon.com/chart_image/5e5b417ce4b0cb56dab128a2.png)

思維導圖在線編輯鏈接:

https://www.processon.com/view/5e5b417ce4b0cb56dab1289f


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM