**千里之行,始于足下。**
在開始進入PHP的內核實現之前,需要做一些準備工作,也需要了解一些背景知識。本章主要涉及PHP源碼的獲取,PHP源碼的編譯,從而得到我們的調試環境。
接下來,我們將簡單描述PHP源碼的結構以及在*nix環境和Windows環境下如何閱讀源碼。最后我們介紹在閱讀PHP源碼過程中經常會遇到的一些語句。
如果你沒有接觸過PHP,或者對PHP的歷史不太了解,我們推薦你先移步[百度百科 PHP](http://baike.baidu.com/view/99.htm),這里有PHP非常詳細的歷史介紹,它包括PHP的誕生,PHP的發展,PHP的應用,PHP現有三大版本的介紹以及對于PHP6的展望等。
> 目前PHP6已經停止開發了,PHP6的設計初衷是向后不兼容以及Unicode支持等。目前 很多特性已經在PHP5.3和PHP5.4中實現了:比如5.4中的traits,支持C#類似的getter&setter語法(目前處在實現階段), 基本類型的類型提示等。
下面,我們將介紹源碼閱讀環境的搭建。
[看到這有什么想法或疑問?點擊這里參與討論吧!](http://www.php-internals.com/book/?p=chapt01/01-00-prepare-and-background&ref=chm&v=TIPI_2014-04-29_V0.8.3#comment)
- 第一章 準備工作和背景知識
- 第一節 環境搭建
- 第二節 源碼結構、閱讀代碼方法
- 第三節 常用代碼
- 第四節 小結
- 第二章 用戶代碼的執行
- 第一節 生命周期和Zend引擎
- 第二節 SAPI概述
- Apache模塊
- 嵌入式
- FastCGI
- 第三節 PHP腳本的執行
- 詞法分析和語法分析
- opcode
- opcode處理函數查找
- 第四節 小結
- 第三章 變量及數據類型
- 第一節 變量的結構和類型
- 哈希表(HashTable)
- PHP的哈希表實現
- 鏈表簡介
- 第二節 常量
- 第三節 預定義變量
- 第四節 靜態變量
- 第五節 類型提示的實現
- 第六節 變量的生命周期
- 變量的賦值和銷毀
- 變量的作用域
- global語句
- 第七節 數據類型轉換
- 第八節 小結
- 第四章 函數的實現
- 第一節 函數的內部結構
- 函數的內部結構
- 函數間的轉換
- 第二節 函數的定義,傳參及返回值
- 函數的定義
- 函數的參數
- 函數的返回值
- 第三節 函數的調用和執行
- 第四節 匿名函數及閉包
- 第五節 小結
- 第五章 類和面向對象
- 第一節 類的結構和實現
- 第二節 類的成員變量及方法
- 第三節 訪問控制的實現
- 第四節 類的繼承,多態及抽象類
- 第五節 魔術方法,延遲綁定及靜態成員
- 第六節 PHP保留類及特殊類
- 第七節 對象
- 第八節 命名空間
- 第九節 標準類
- 第十節 小結
- 第六章 內存管理
- 第一節 內存管理概述
- 第二節 PHP中的內存管理
- 第三節 內存使用:申請和銷毀
- 第四節 垃圾回收
- 新的垃圾回收
- 第五節 內存管理中的緩存
- 第六節 寫時復制(Copy On Write)
- 第七節 內存泄漏
- 第八節 小結
- 第七章 Zend虛擬機
- 第一節 Zend虛擬機概述
- 第二節 語法的實現
- 詞法解析
- 語法分析
- 實現自己的語法
- 第三節 中間代碼的執行
- 第四節 PHP代碼的加密解密
- 第五節 小結
- 第八章 線程安全
- 第二節 線程,進程和并發
- 第三節 PHP中的線程安全
- 第九章 錯誤和異常處理
- 第十章 輸出緩沖
- 第十六章 PHP語言特性的實現
- 第一節 循環語句
- foreach的實現
- 第二十章 怎么樣系列(how to)
- 附錄
- 附錄A PHP及Zend API
- 附錄B PHP的歷史
- 附錄C VLD擴展使用指南
- 附錄D 怎樣為PHP貢獻
- 附錄E phpt測試文件說明
- 附錄F PHP5.4新功能升級解析
- 附錄G:re2c中文手冊