1. 程式人生 > >進入CSDN的第一篇文章,PHP拓展開發

進入CSDN的第一篇文章,PHP拓展開發

進入CSDN的第一篇文章,PHP拓展開發

        我是一個新入坑的PHPER,我在程式設計的道路上坎坷無數,直到我遇到了PHP,PHP的簡單是真的可以靠這個迅速學習並以此謀生,我也是想靠這PHP的基礎擴充套件我的的技術圈,比如Java,安卓,python,C/C++等等,興趣愛好在這塊現在又找到一份不錯穩定的工作,我決定開通CSDN,通過這個網站來記錄我的程式設計生涯,和各種程式碼坑,和大家一起討論並解決問題。
        我在PHP開發中沒有遇到過多的技術問題,不過我遇到了技術瓶頸,如何提升自己的PHP技術能力,或者說自己的程式設計能力,我思考了一段時間(再加上百度),我找到了比較適合我的方法,大家可以參考。
        研究PHP核心來提升自己,不過在此基礎上PHP單獨看核心文件和資料書籍肯定是遠遠不夠的,然後我把目光放到了PHP的拓展開發,通過研究核心提升自己的理論水平,通過拓展開發來解除枯燥的理論學習時間。

正題

        我在研究PHP拓展開發的時候遇見了幾個問題

  1. C語言能力不足
  2. PHP核心理論知識不足
  3. 網上的資料不夠細緻(我個人比較馬虎看的不細)

1.C語言能力不足
        我自從發現了這個問題,我開始緩慢的學習C,因為C的學習不是最終目的,最終目的是PHP的拓展,一個HelloWolrd拓展,我沒有花大精力去學習

2.PHP核心理論知識不足
        這個部分沒有辦法,只有學習,看資料,啃書

3.網上的資料不夠細緻
        這是我學習的重點,也是想為後來學習PHP拓展的人做的貢獻
我希望通過我的學習吧,資料一點一點完善,釋出到CSDN

拓展開發實操

我遇到了開發中的第一個問題,如何入手,開發一個HelloWorld!
查詢資料,百度,Google,找了一遍。找到一些可用的資料,進行檢視
執行檔案生成PHP核心骨架

原文是這樣的

##本例用的是php7.1.1
cd ext
./ext_skel --extname=helloworld

我實際執行是無效的,命令列會告訴你ext_skel不是內部或外部命令

我後來經過一天斷斷續續的學習後調整得到下面的命令列命令

##需要提前設定好PHP環境變數
##我使用的是php7.2.1
##進入PHP原始碼目錄
##進入ext目錄
##執行PHP執行ext_skel_win32.php
cd ext
php ext_skel_win32 --extname=helloworld

然後得到結果sh不是內部或外部命令
我直接百度得到了結果
要下載cygwin(cygwin是一個在windows平臺上執行的類UNIX模擬環境)才能使用(這個應用一定要謹慎選擇,很大,我下了150多G)
然後設定
修改“php ext_skel_win32.php”中的配置:$cygwin_path = ‘c:\cygwin64\bin’; (改為你cygwin的實際路徑)。
找到然後修改就好了

##開啟php ext_skel_win32.php
##找到$cygwin_path
##直接修改實際路徑就好了
$cygwin_path = 'c:\cygwin64\bin'; 

再次執行

##需要提前設定好PHP環境變數
##我使用的是php7.2.1
##進入PHP原始碼目錄
##進入ext目錄
##執行PHP執行ext_skel_win32.php
cd ext
php ext_skel_win32 --extname=helloworld

就直接生成拓展骨架了
修改這個拓展內部的config.m4(PHP原始碼ext資料夾下剛剛建立骨架名資料夾下)

##動態編譯選項,通過.so的方式連結,去掉dnl註釋:

PHP_ARG_WITH(helloworld, for helloworld support,
Make sure that the comment is aligned:
[  --with-helloworld             Include helloworld support])

##靜態編譯選項,通過enable來啟用,去掉dnl註釋:

 PHP_ARG_ENABLE(helloworld, whether to enable helloworld support,
 Make sure that the comment is aligned:
 [  --enable-helloworld           Enable helloworld support])
複製程式碼

然後編譯(其實我還沒到編譯這一塊)
之後的內容還沒有測試
我的hello world拓展成功執行我會單獨再發一篇博文