PHP核心技術與最佳實踐

PHP核心技術與最佳實踐

《PHP核心技術與最佳實踐》是2012年機械工業出版社出版的圖書,作者是列旭松、陳文。本書系統歸納和深刻解讀了PHP開發中的編程思想、底層原理、核心技術、開發技巧、編碼規範和最佳實踐。

基本介紹

  • 書名:PHP核心技術與最佳實踐
  • 作者:列旭松、陳文
  • 頁數:540
  • 出版社機械工業出版社
  • 出版時間:2012-11-1
  • 裝幀:平裝
  • 開本:16開
  • 紙張:膠版紙
內容簡介,作者簡介,圖書目錄,

內容簡介

這是一本致力於為希望成為中高級PHP程式設計師的讀者提供高效而有針對性指導的經典著作。
全書分為5個部分:第一部分(1~2章)從不同的角度闡述了面向對象軟體設計思想的核心概念、技術和原則,分析了面向對象的特性、設計模式的理念,指出了如何設計低耦合、高可擴展性的軟體,等等;
第二部分(3~6章)詳細講解了PHP中正則表達式的規範和使用技巧,PHP網路編程的原理、方法、技巧和一些重要的操作,PDO、資料庫套用最佳化,資料庫設計和MySQL的高級套用,PHP擴展引擎的原理與實踐;
第三部分(第7章)撥雲見日,圍繞PHP擴展開發進行了細緻而深入的探討,解析了PHP的底層實現和Zend虛擬機API,並用PHP擴展開發的實例帶領讀者走進PHP的底層世界,旨在讓讀者對PHP性能最佳化、底層原理進行深入的理解。第四部分(8~11章)重點討論了快取的設計、Memcached的原理與實踐、NoSQL資料庫Redis源碼分析與套用實踐、高性能PHP網站的架構和設計等內容;第五部分(12~14章)詳細講解了PHP代碼的調試和測試、Hash算法和資料庫的實現,以及PHP的編碼規範,旨在幫助讀者提高開發效率,養成良好編程習慣。

作者簡介

列旭松,資深PHP技術工程師,精通PHP及其相關技術,對PHP核心原理有較深入的理解,開發經驗豐富。曾自主開發了關鍵字匹配伺服器和訊息佇列SquirrelMQ。平時喜歡開發一些實用的PHP擴展,如PHP字典擴展(紅黑樹算法)和PHP索引擴展(B+樹算法)。精通C語言,同時對Web伺服器的架構和最佳化、高並發服務端編程、Redis和Memcached等技術有深入的研究和認識。活躍於PHPChinaChinaUnix等專業社區,擔任PHPChina論壇核心版塊版主。
陳文,資深PHP技術工程師,精通PHP及其相關技術,尤其擅長於PHP框架開發和套用架構。他還是一位資深的Java開發工程師,具有FortranScalaC++語言的開發和使用背景,在傳統軟體和網際網路開發領域都有豐富的實戰經驗。此外,他還擅長TCP/IP編程、多執行緒與並發程式設計、網路協定分析、資料庫性能最佳化以及各種快取技術,熟悉MySQL和Oracle等關係資料庫產品。現從事網路安全軟體開發,以及移動SI業務開發。對語言特性和軟體設計思想有獨到的見解,追求代碼之美和高效率程式開發,愛好鑽研底層技術,崇尚和提倡“以理論指導實踐”。尤其愛好數學,認為數學是培養和鍛鍊思維和邏輯能力的重要工具,對算法有一定研究。長期活躍在PHPChinaITeye看雪論壇等社區,在PHPChina社區擔任版主。

圖書目錄

前言
第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方法
1.3 繼承與多態
1.3.1 類的組合與繼承
1.3.2 各種語言中的多態
1.4.1 接口的作用
1.4.2 對PHP接口的思考
1.5 反射
1.5.1 如何使用反射API
1.5.2 反射有什麼作用
1.6 異常和錯誤處理
1.6.1 如何使用異常處理機制
1.6.2 怎樣看PHP的異常
1.6.3 PHP中的錯誤級別
1.6.4 PHP中的錯誤處理機制
1.7 本章小結
第2章 面向對象的設計原則
2.1 面向對象設計的五大原則
2.1.1 單一職責原則
2.1.3 開放-封閉原則
2.1.4 替換原則
2.2 一個面向對象留言本的實例
2.3 面向對象的思考
2.4 本章小結
第3章 正則表達式基礎與套用
3.1 認識正則表達式
3.1.1 PHP中的正則函式
3.1.2 正則表達式的組成
3.1.3 測試工具的使用
3.2 正則表達式中的元字元
3.2.1 什麼是元字元
3.2.2 起始和結束元字元
3.2.3 點號
3.2.4 量詞
3.3 正則表達式匹配規則
3.3.1 字元組
3.3.2 轉義
3.3.3 反義
3.3.4 分支
3.3.5 分組
3.3.6 反向引用
3.3.7 環視
3.3.8 貪婪懶惰匹配模式
3.4 構造正則表達式
3.4.1 正則表達式的邏輯關係
3.4.3 正則表達式的常用模式
3.5 正則在實際開發中的套用
3.5.1 移動手機校驗
3.5.2 匹配E-mail地址
3.5.3 轉義在數據安全中的套用
3.5.4 URL重寫與搜尋引擎最佳化
3.5.5 刪除檔案中的空行和注釋
3.6 正則表達式的效率與最佳化
3.7 本章小結
第4章 PHP網路技術及套用
4.1 HTTP協定詳解
4.1.1 HTTP協定與SPDY協定
4.1.2 HTTP協定如何工作
4.1.3 HTTP套用:模擬灌水機器人
4.1.4 垃圾信息防禦措施
4.2.1 抓包工具分類
4.2.2 Fiddler功能與原理
4.2.3 安裝Fiddler
4.2.4 Fiddler基本界面
4.2.5 使用Fiddler進行HTTP斷點調試
4.3 Socket進程通信機制及套用
4.3.1 進程通信相關概念
4.3.2 Socket演示:實現伺服器端與客戶端的互動
4.3.3 Socket函式原型
4.3.4 PHP中的Socket函式
4.3.5 Socket互動套用:使用Socket抓取數據
4.4 cURL工具及套用
4.4.1 建立cURL請求的基本步驟
4.4.2 檢查cURL錯誤和獲取返回信息
4.4.3 在cURL中偽造頭信息
4.4.4 在cURL中用POST方法傳送數據
4.4.5 使用cURL上傳檔案
4.4.6 cURL批處理
4.4.7 cURL設定項
4.4.8 網路套用:使用cURL抓取騰訊微博
4.5.1 SMTP協定如何工作
4.5.2 SMTP協定常用命令
4.5.3 SMTP協定套用:使用Socket傳送郵件
4.6 WebService的前世今生
4.6.1 WebService簡介
4.6.2 認識PHPRPC協定
4.6.3 Web服務的實現模式
4.6.5 調試工具soapUI
4.7 Cookie詳解
4.7.1 Cookie的基本概念及設定
4.7.2 PHP和JavaScript對Cookie的操作
4.7.3 Cookie存儲機制及套用
4.7.4 Cookie跨域與P3P協定
4.7.5 本地存儲localStorage
4.8 Session詳解
4.8.1 Session的基本概念及設定
4.8.2 Session的工作原理
4.8.3 Session入庫
4.8.4 CookieSession問答
4.9 本章小結
第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 基本語句最佳化10個原則
5.2.2 索引與性能分析
5.2.3 伺服器和配置的最佳化
5.2.4 MySQL瓶頸及應對措施
5.3.1 範式與反範式
5.3.3 分表的套用
5.4 MySQL的高級套用
5.4.1 MySQL自增長序列
5.4.2 MySQL視圖
5.4.3 MySQL存儲過程和事件調度
5.4.4 用MySQL模擬訊息佇列
5.4.5 SQL注入漏洞與防範
5.5 本章小結
第6章 PHP模板引擎的原理與實踐
6.1 代碼分層的思想
6.2 實現一個簡單的模板引擎骨架
6.2.1 搭建模板引擎基礎類骨架
6.2.2 編譯類骨架
6.2.3 測試模板引擎
6.3 模板引擎的編譯
6.3.1 實現變數標籤
6.3.2 實現foreach標籤
6.3.3 實現if…else標籤
6.3.4 對PHP原生語法的支持
6.4 完善模板引擎
6.4.1 模板快取機制的實現
6.4.2 調試和快取清理
6.4.3 如何使用模板
6.5 常用模板引擎
6.5.1 Discuz模板引擎
6.5.3 DedeCms模板引擎
6.5.4 Blitz模板引擎
6.5.5 模板引擎的一些思考
6.6 本章小結
第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.6 編寫一個完整的擴展
7.6.1 鍊表結構的實現
7.6.2 創建PHP擴展框架
7.6.3 編寫代碼
7.6.4 編譯安裝擴展
7.6.5 測試擴展
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.3.1 eAccelerator下載及使用
8.3.2 如何查看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.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.1 配置檔案信息
10.5.2 開啟VM的後台操作
10.5.3 Redis Object和VM Pointer
10.5.4 交換過程
10.5.5 阻塞式VM
10.5.6 非阻塞式VM
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.2 前端調試
12.2.1 Firebug調試API
12.2.2 使用Firebug調試DOM結構
12.2.3 使用Firebug調試JavaScript
12.2.4 使用Fiddler調試遠程伺服器上的檔案
12.3 日誌管理
12.3.1 PHP日誌
12.3.2 Apache伺服器日誌
12.3.3 MySQL日誌
12.4 代碼性能測試技術
12.4.1 時間點測試
12.4.2 檔案查看工具WinCacheGrind
12.4.3 性能測試注意事項
12.5.1 單元測試框架PHPUnit的安裝
12.5.2 結合NetBeans使用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 本章小結
第14章 PHP編碼規範
14.1 檔案格式
14.1.1 檔案標記
14.1.2 檔案和目錄命名
14.1.3 檔案目錄結構
14.2 命名規範
14.2.1 變數命名
14.2.2 類及接口命名
14.2.3 資料庫命名
14.2.4 習慣與約定
14.3 注釋規範
14.3.1 程式注釋
14.3.2 檔案注釋
14.3.3 類接口注釋
14.3.4 方法和函式注釋
14.3.5 標註的使用
14.4.1 縮進和空格
14.4.2 語句斷行
14.4.3 更好的習慣
14.5 本章小結

相關詞條

熱門詞條

聯絡我們