分享學習 PHP 源碼的方法

        ​天天抽一點時間來看看 PHP 源碼方面的書,說實話,沒法在調試器下觀察 PHP 運行狀態的上下文實在是一件痛苦的事情。不過還好不是一無所得,雖然內容比較多,可是掌握方法挨着看下去仍是能夠看一些代碼的。並且自己 PHP 源碼講解就有書,因此學習起來仍是較爲方便的。想要調試源碼,我以爲我最好應該找一個前一天充分休息而且是陽光明媚的早上來學習關於調試 PHP 源碼的知識,那樣可能效率會高一些,可是這樣的機會好像又很少。
 
        之前學習逆向分析的時候須要看反彙編代碼,當時也看得很是的暈,後來看書學習時書中也給出了閱讀反彙編的經驗。首先把指令進行分類,好比函數調用的指令,流程控制的指令和數據處理的指令等。而後把要進行逆向分析的部分按照指令分類進行標註,閱讀的反彙編的時候,遇到函數調用的部分基本比較明顯,就是堆棧操做、函數調用等,遇到流程控制的時候把這些反彙編直接根據特徵對應到 if、for、while 等相應的控制結構中,而遇到數據處理的部分則須要一行一行的閱讀。
 
        其實對應到閱讀 PHP 的源碼也是相似的吧。
 
        ​說說我學習 PHP 源碼的方法吧。雖然有講解 PHP 源碼方面的書,可是書中的內容在作一些基本的介紹後就開始講源碼了。而 PHP 的底層源碼中有很是多的​數據結構,並且是 struct 套着 struct。這就致使一個問題,若是底層的數據結構的邏輯整理不清楚,那麼在看到代碼操做這些數據結構的時候,必然也是暈的。所以,我看書的時候,我會把相關的數據結構按照相似 UML 圖的方式整理一下,其實就是畫幾個圖,標記一下所遇到的數據結構,標記數據結構時我會把結構體的名稱和幾個關鍵的字段標註好,而且把數據結構之間的關聯關係整理出來,這樣就會把所涉及的數據結構及數據關係搞明白了,在看代碼的時候,把本身整理的數據結構打開對照着看,就不是那麼暈了。當代碼操做具體數據結構中的字段時,再把具體的字段補充到對應的數據結構中,這樣不但 PHP 源碼底層的處理邏輯瞭解了,並且對於底層的數據結構也就有了清晰和全面的掌握了。
 
        這就是個人方法吧,雖然不復雜可是仍是比較有用的。畢竟笨人的辦法就是這麼的原始和簡單!
相關文章
相關標籤/搜索