PHP作為流行的語言之一,自**個版本發布至今的二十幾年里經歷了多次重大改進,PHP7版本*大的特色在于其性能上的突破,比PHP5快了一倍。目前PHP7已經得到了廣泛應用,越來越多的項目從PHP5遷移到了PHP7。目前,關于PHP內核的資料非常有限,本書以當前流行的PHP7版本為基礎,系統性地、盡可能詳細地介紹PHP語言底層的實現,旨在幫助更多的開發者進一步理解PHP,參與到PHP的實現中,為未來PHP的發展貢獻一份力量!全書內容主要包括PHP數據類型的實現、PHP的編譯及執行、PHP內存的管理、函數及面向對象的實現、PHP基礎語法的實現,以及PHP擴展的開發。
基于PHP7,深刻揭示內核原理
內容翔實,詳細介紹PHP語言底層的實現
助力開發者進一步理解PHP,參與到PHP的實現中
目前就職于滴滴引擎技術部,負責專快車分單架構相關的工作,曾作為核心成員參與了滴滴小巴業務線的成立,曾先后就職于360、搜狗,有4年多的PHP、C、Golang開發經驗,熟悉PHP擴展的實現,對PHP內核有深入的理解。
第1章 PHP基礎架構
1.1 簡介
1.2 安裝及調試
1.3 PHP7的變化
1.4 PHP的構成
1.5 生命周期
1.6 小結
第2章 SAPI
2.1 Cli
2.1.1 執行流程
2.1.2 內置Web服務器
2.2 Fpm
2.2.1 基本實現
2.2.2 Fpm的初始化
2.2.3 worker――請求處理
2.2.4 master――進程管理
2.3 Embed
2.3.1 實現
2.3.2 使用
2.4 小結
第3章 數據類型
3.1 變量
3.1.1 變量類型
3.1.2 內部實現
3.2 字符串
3.3 數組
3.3.1 基本實現
3.3.2 散列函數
3.3.3 數組的初始化
3.3.4 插入
3.3.5 哈希沖突
3.3.6 查找
3.3.7 擴容
3.4 引用
3.5 類型轉換
3.5.1 轉換為NULL
3.5.2 轉換為布爾型
3.5.3 轉換為整型
3.5.4 轉換為浮點型
3.5.5 轉換為字符串
3.5.6 轉換為數組
3.5.7 轉換為對象
3.6 小結
第4章 內存管理
4.1 變量的自動GC機制
4.1.1 引用計數
4.1.2 寫時復制
4.1.3 回收時機
4.2 垃圾回收
4.2.1 回收算法
4.2.2 具體實現
4.3 內存池
4.3.1 內存池的初始化
4.3.2 內存分配
4.3.3 系統內存分配
4.3.4 內存釋放
4.4 線程安全
4.4.1 TSRM的基本實現
4.4.2 線程私有數據
4.4.3 線程局部存儲
4.5 小結
第5章 PHP的編譯與執行
5.1 語言的編譯與執行
5.1.1 編譯型語言
5.1.2 解釋型語言
5.2 Zend虛擬機
5.2.1 opline指令
5.2.2 zend_op_array
5.2.3 zend_execute_data
5.2.4 zend_executor_globals
5.3 PHP的編譯
5.3.1 詞法、語法解析
5.3.2 抽象語法樹編譯
5.3.3 pass_two()
5.4 PHP的執行
5.4.1 handler的定義
5.4.2 調度方式
5.4.3 執行流程
5.4.4 全局execute_data和
opline
5.5 運行時緩存
5.6 Opcache
5.6.1 opcode優化
5.6.2 JIT
5.7 小結
第6章 函數
6.1 用戶自定義函數
6.1.1 語法解析
6.1.2 抽象語法樹的編譯
6.2 內部函數
6.3 函數的調用
6.4 函數的執行
6.5 小結
第7章 面向對象
7.1 類
7.1.1 常量
7.1.2 成員屬性
7.1.3 成員方法
7.1.4 類的編譯
7.1.5 內部類
7.1.6 類的自動加載
7.2 對象
7.2.1 對象的創建
7.2.2 非靜態成員屬性的讀寫
7.2.3 對象的復制
7.2.4 對象的比較
7.2.5 對象的銷毀
7.3 繼承
7.3.1 常量的繼承
7.3.2 成員屬性的繼承
7.3.3 成員方法的繼承
7.4 動態屬性
7.5 魔術方法
7.6 小結
第8章 命名空間
8.1 概述
8.2 命名空間的定義
8.3 命名空間的使用
8.3.1 use導入
8.3.2 動態用法
8.4 小結
第9章 PHP基礎語法的實現
9.1 靜態變量
9.2 常量
9.2.1 const
9.2.2 define()
9.3 全局變量
9.3.1 全局變量符號表
9.3.2 全局變量的訪問
9.3.3 全局變量的銷毀
9.3.4 超全局變量
9.4 分支結構
9.4.1 if
9.4.2 switch
9.5 循環結構
9.5.1 while
9.5.2 do while
9.5.3 for
9.5.4 foreach
9.6 中斷及跳轉
9.6.1 break/continue
9.6.2 goto
9.7 include/require
9.8 異常處理
9.8.1 PHP中的try catch
9.8.2 內核中的異常處理
9.9 break/continue LABEL語法的
實現
9.10 小結
第10章 擴展開發
10.1 擴展的內部實現
10.2 擴展的構成及編譯
10.2.1 腳本工具
10.2.2 擴展的編寫步驟
10.2.3 config.m4
10.3 鉤子函數
10.3.1 模塊初始化階段
10.3.2 請求初始化階段
10.3.3 請求結束階段
10.3.4 post deactivate階段
10.3.5 模塊關閉階段
10.4 全局資源
10.5 ini配置
10.6 函數
10.6.1 內部函數注冊
10.6.2 函數參數解析
10.6.3 引用傳參
10.6.4 函數返回值
10.6.5 函數調用
10.7 Zval的操作
10.7.1 zval的創建及獲取
10.7.2 變量復制
10.7.3 引用計數
10.7.4 字符串操作
10.7.5 數組操作
10.8 常量
10.9 面向對象
10.9.1 內部類注冊
10.9.2 成員屬性
10.9.3 成員方法
10.9.4 常量
10.9.5 類的實例化
10.10 資源
10.11 小結