我查看過鳥哥的幾個擴充,都是新拉個分支來寫php7版的擴充;
而swoole擴充,倒是使用了個php7-swapper.h來封裝,但是它裡面使用的php核心的東西相對來說比較好用宏來操作。
比如,在php5版擴充下有如下定義:
typedef struct _test_obj { zend_object std; // 放到頭部 my_test_struct *my; int count;} test_obj;
根據php7擴充改進意見,該結構體需要修改為:
typedef struct _test_obj { my_test_struct *my; int count; zend_object std; // 放到尾部} test_obj;
等等,要是使用 宏 來封裝,就會讓代碼看起來比較醜點,但是如果不這樣,分兩個分支開發的話,那每次都要修改兩份代碼,也比較費事。
不知道各位老大有什麼好的思路,求賜教,謝謝!
回複內容:
我查看過鳥哥的幾個擴充,都是新拉個分支來寫php7版的擴充;
而swoole擴充,倒是使用了個php7-swapper.h來封裝,但是它裡面使用的php核心的東西相對來說比較好用宏來操作。
比如,在php5版擴充下有如下定義:
typedef struct _test_obj { zend_object std; // 放到頭部 my_test_struct *my; int count;} test_obj;
根據php7擴充改進意見,該結構體需要修改為:
typedef struct _test_obj { my_test_struct *my; int count; zend_object std; // 放到尾部} test_obj;
等等,要是使用 宏 來封裝,就會讓代碼看起來比較醜點,但是如果不這樣,分兩個分支開發的話,那每次都要修改兩份代碼,也比較費事。
不知道各位老大有什麼好的思路,求賜教,謝謝!
使用者體驗最佳的方式就是通過宏來寫,這樣使用者就不必選擇版本。當然這樣寫的弊端就是兩塊代碼交叉會混雜,畢竟PHP7對基礎架構改動頗大,雖然PHP7中內建的大部分宏還遵循老版本的寫法,但堆上申請變數,一些與引用機制相關的,以及其他常用的宏都有所改變,所以合并寫一塊挑戰還是挺大的。如果覺得麻煩,就如鳥哥一樣分開寫吧,目前大部分擴充也已分開的模式先進行編寫,等較成熟時再合并到一起。
@有明 多謝,現在確定先分開寫,等php7徹底穩定了再看看。