前面兩篇介紹了 Zephir ,從此可以開發自己的擴展了,可畢竟是通過轉換而來,雖然很方便,可對於擴展還是一知半解,也無法判斷其好壞,所以還是要了解下用原生的方法是怎麼開發一個 PHP 擴展的。
本文以 php-7.2.15 爲例
創建擴展骨架
# 源碼路徑
cd /usr/local/src/php-7.2.15/ext
./ext_skel --extname=twinkle_log
提示如下
提示已創建好基礎文件,如果想使用這個新擴展,需要噼裏啪啦這麼些布驟,先記着就好。
修改config.m4
cd twinkle_log
vi config.m4
這兩塊註釋選一個先打開,具體含義後面文章再說明,我們選下面的
創建自己的方法
vi twinkle_log.c
聲明該方法
注意大小寫敏感
編譯安裝
/usr/local/php72/bin/phpize
./configure --with-php-config=/usr/local/php72/bin/php-config
make
make install
填加擴展
vi /usr/local/php72/lib/php.ini
# 填加擴展 extension=twinkle_log
測試一下
擴展安裝成功
<?php
// test.php
hello_world();
執行腳本
php -f test.php
執行成功。
這樣我們就創建了一個非常簡單的擴展,雖是很簡單的擴展,可還是比 Zephir 複雜很多。
當然他啥用也沒有,沒有涉汲到內存管理,沒有使用指針,做了這一些操作,也不知道是啥意思,帶着疑問,我們慢慢深入研究。