?每天抽一點時間來看看 PHP 原始碼方面的書,說實話,無法在除錯器下觀察 PHP 運行狀態的背景關系實在是一件痛苦的事情,不過還好不是一無所獲,雖然內容比較多,但是掌握方法挨著看下去還是可以看一些代碼的,而且本身 PHP 原始碼講解就有書,所以學習起來還是較為方便的,想要除錯原始碼,我覺得我最好應該找一個前一天充分休息并且是陽光明媚的早上來學習關于除錯 PHP 原始碼的知識,那樣可能效率會高一些,但是這樣的機會好像又不多, 以前學習逆向分析的時候需要看反匯編代碼,當時也看得非常的暈,后來看書學習時書中也給出了閱讀反匯編的經驗,首先把指令進行分類,比如函式呼叫的指令,流程控制的指令和資料處理的指令等,然后把要進行逆向分析的部分按照指令分類進行標注,閱讀的反匯編的時候,遇到函式呼叫的部分基本比較明顯,就是堆疊操作、函式呼叫等,遇到流程控制的時候把這些反匯編直接根據特征對應到 if、for、while 等相應的控制結構中,而遇到資料處理的部分則需要一行一行的閱讀, 其實對應到閱讀 PHP 的原始碼也是類似的吧, ?說說我學習 PHP 原始碼的方法吧,雖然有講解 PHP 原始碼方面的書,但是書中的內容在做一些基本的介紹后就開始講原始碼了,而 PHP 的底層原始碼中有非常多的?資料結構,而且是 struct 套著 struct,這就導致一個問題,如果底層的資料結構的邏輯整理不清楚,那么在看到代碼操作這些資料結構的時候,必然也是暈的,因此,我看書的時候,我會把相關的資料結構按照類似 UML 圖的方式整理一下,其實就是畫幾個圖,標記一下所遇到的資料結構,標記資料結構時我會把結構體的名稱和幾個關鍵的欄位標注好,并且把資料結構之間的關聯關系整理出來,這樣就會把所涉及的資料結構及資料關系搞明白了,在看代碼的時候,把自己整理的資料結構打開對照著看,就不是那么暈了,當代碼操作具體資料結構中的欄位時,再把具體的欄位補充到對應的資料結構中,這樣不但 PHP 原始碼底層的處理邏輯了解了,而且對于底層的資料結構也就有了清晰和全面的掌握了, 這就是我的方法吧,雖然不復雜但是還是比較有用的,畢竟笨人的辦法就是這么的原始和簡單!
我的微信公眾號:“碼農UP2U”
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/112843.html
標籤:PHP
