PHP核心技術與最佳實踐

来源:https://www.cnblogs.com/liulangdemao/archive/2018/11/03/9901106.html
-Advertisement-
Play Games

《PHP核心技術與最佳實踐》是一本致力於為希望成為中高級PHP程式員的讀者提供高效而有針對性指導的經典著作。系統歸納和深刻解讀了PHP開發中的編程思想、底層原理、核心技術、開發技巧、編碼規範和最佳實踐。全書分為5個部分:第一部分(1~2章)從不同的角度闡述了面向對象軟體設計思想的核心概念、技術和原則 ...


《PHP核心技術與最佳實踐》是一本致力於為希望成為中高級PHP程式員的讀者提供高效而有針對性指導的經典著作。系統歸納和深刻解讀了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的編碼規範,旨在幫助讀者提高開發效率,養成良好編程習慣。

需要學習的朋友可以通過網盤免費下載pdf版 (先點擊普通下載-----再選擇普通用戶就能免費下載了)http://putpan.com/fs/eyfifbdean3s5heu9/

作者簡介  · · · · · ·

列旭松,資深PHP技術工程師,精通PHP及其相關技術,對PHP內核原理有較深入的理解,開發經驗豐富。曾自主開發了關鍵字匹配伺服器和消息隊列SquirrelMQ。平時喜歡開發一些實用的PHP擴展,如PHP字典擴展(紅黑樹演算法)和PHP索引擴展(B+樹演算法)。精通C語言,同時對Web伺服器的架構和優化、高併發服務端編程、Redis和Memcached等技術有深入的研究和認識。活躍於PHPChina和ChinaUnix等專業社區,擔任PHPChina論壇內核版塊版主。

陳文,資深PHP技術工程師,精通PHP及其相關技術,尤其擅長於PHP框架開發和應用架構。他還是一位資深的Java開發工程師,具有Fortran、Scala和C++語言的開發和使用背景,在傳統軟體和互聯網開發領域都有豐富的實戰經驗。此外,他還擅長TCP/IP編程、多線程與併發程式設計、網路協議分析、資料庫性能優化以及各種緩存技術,熟悉MySQL和Oracle等關係資料庫產品。現從事網路安全軟體開發,以及移動SI業務開發。對語言特性和軟體設計思想有獨到的見解,追求代碼之美和高效率程式開發,愛好鑽研底層技術,崇尚和提倡“以理論指導實踐”。尤其愛好數學,認為數學是培養和鍛煉思維和邏輯能力的重要工具,對演算法有一定研究。長期活躍在PHPChina、ITeye和看雪論壇等社區,在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.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.2 介面隔離原則
2.1.3 開放-封閉原則
2.1.4 替換原則
2.1.5 依賴倒置原則
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.2 運算符優先順序
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 抓包工具
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 簡單郵件傳輸協議SMTP
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.4 簡單對象訪問協議SOAP
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 Cookie與Session問答
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 資料庫設計
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 用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.2 Smarty模板引擎
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 事務處理
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 虛擬記憶體
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 單元測試
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 代碼風格
14.4.1 縮進和空格
14.4.2 語句斷行
14.4.3 更好的習慣  

需要IT編程經典書籍資源大合集百度網盤鏈接的加qq 2057904338,另本人願意有償帶小白學python,幫助你答疑解惑,幫助你解決問題,指導你找工作,帶你入行。相信我有人帶著你的話可以少走彎路,成功入行拿高薪。北京地區周六日可上門指導,非北京線上指導。本人前每日優鮮後端工程師,土木專業自學python成功轉行,月薪5位數,性格安靜,誠信正直,想學的加qq。

另閑聊的也可加,就當交個朋友吧!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • /** * ServletContext對象學習 * 問題: * 不同的用戶使用相同的數據 * 解決: * ServletContext對象 * 特點: * 伺服器創建 * 用戶共用 * 作用域: * 整個項目內 * 生命周期: * 伺服器啟動到伺服器關閉 * 使用: * 獲取ServletCont ...
  • PHP 支持 9 種原始數據類型。詳細講述了其中基本數據類型的用法與註意事項。 ...
  • 模板類中,或模板函數中,若限定模板參數為數值類型,可以使用如下方式進行判斷. 以上代碼節選自muduo. 其中主要推斷方式是通過調用std::is_arithmetic<T>. 若 T 為算術類型(即整數類型或浮點類型)或其修飾類型(添加註入const等),則提供等於 true 的成員常量 valu ...
  • 變數來源於數學,是電腦語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。 ...
  • 一、介紹和使用 Lombok 是一個 java 庫,能以簡單的註解形式來簡化 java 代碼,提高開發人員的開發效率。 常見使用在開發過程中需要寫的 javabean,往往開發需要花時間去添加相應的 getter/setter,也許還要去寫構造器、equals等方法,而且需要維護,當屬性多時會出現大 ...
  • 目錄 一. 正則表達式 二. 特殊的元字元 三. python3的re模塊方法 四. python3的re模塊練習 五. 第一章課後練習題 六. re模塊綜合應用之計算器 一. 正則表達式 正則表達式是由一堆字元和特殊符號組成的字元串。它可以為我們提供高級的文本搜索,匹配,替換功能。當然,正則表達式 ...
  • ServerBootstrap與Bootstrap分別是netty中服務端與客戶端的引導類,主要負責服務端與客戶端初始化、配置及啟動引導等工作,接下來我們就通過netty源碼中的示例對ServerBootstrap與Bootstrap的源碼進行一個簡單的分析。首先我們知道這兩個類都繼承自Abstra ...
  • 迴圈是流程式控制制的又一重要結構,“白天-黑夜-白天-黑夜”屬於時間上的迴圈,古人“年復一年、日復一日”的“日出而作、日落而息”便是每天周而複始的生活。電腦程式處理迴圈結構時,給定一段每次都要執行的代碼塊,然後分別指定迴圈的開始條件和結束條件,就形成了常見的迴圈語句。最簡單的迴圈結構只需一個while ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...