前段時間因為專案需要,研究了一下在 Windows 系統下進行 PHP 擴展的開發,對于 PHP 擴展的開發并不是一件容易的事情(話又說回來了,會者不難,難者不會,關鍵是自己不會),我當時的需求,主要是通過 PHP 擴展來加載 DLL 檔案,并呼叫 DLL 中的匯出函式,由于以前有一些 Win32 開發的基礎,因此這個需求相對還不算太復雜,
開發 PHP 擴展比較難,我個人認為有兩方面的原因,一方面需要了解作業系統相關的開發,畢竟 PHP 擴展不是 .so 檔案就是 .dll 檔案,另一方面需要了解 PHP 本身的底層資料結構,因此,借此機會就打算學習 PHP 的原始碼,不過說來慚愧,由于本身能力有限,所以學習速度比較緩慢,當然了,我是在有參考書的情況下進行學習的,但是速度也并不高,在有參考書的情況下,學習速度也不快,除了本身的能力外,另一方面是資料結構比較多,而且資料之間的關系也比較多,不能很快的對資料結構進行記憶,也不能很好的理清資料結構之間的關系,這是我比較大的障礙,(當然了,我投入的時間也并不多,這個是不好意思說罷了)
由于上面的原因,我覺得一邊看書和看原始碼的同時,一邊去整理各個資料結構和資料關系的圖,以方便和加強自己的記憶,從而讓自己更好的去理解,
我看的參考書,在原始碼分析前,首先介紹了原始碼的目錄結構,我將其整理成了思維導圖,如下圖,

原始碼目錄結構相對比較簡單,畢竟就是一個大綱,在不斷學習原始碼的程序中,其實可以接著完善,把原始碼相應的檔案,相應的結構體都維護進去,這樣思維導圖就會逐步的完整,也就相對的有意義了,
在參考書中介紹完原始碼目錄結構后,開始介紹 PHP 變數的資料結構,變數的資料結構在書中有詳細的介紹,在詳細介紹之前,只是粗略的進行了整體上的介紹,在這里,我把它們的資料結構和資料關系也進行了整理,并且把結構體所在的目錄和檔案也進行了標注,方便自己在學習原始碼的時候方便查找,也方便快速查閱各個資料結構之間的關系,畢竟這些資料結構實在太多了,如下圖,

上面的圖,就是關于 PHP 變數的底層資料結構的圖,圖中的資料結構中欄位并不完整,因為我是在逐步的去完善,在每學習完一部分后就去完善一部分資料結構,當資料結構完善了,圖也就完善了,由于圖過于大,所以這里沒有辦法顯示清楚,需要詳細圖片的,可以在公眾號中回復“PHP原始碼學習”,即可獲得清晰的大圖,希望可以對大家學習 PHP 的原始碼有所幫助,
我的微信公眾號:“碼農UP2U”

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/135888.html
標籤:PHP
上一篇:Thinkphp5.0終章
