由於php7核心升級,現在開發php擴充,是不是都要開發兩個:php5和php7版的?

來源:互聯網
上載者:User
我查看過鳥哥的幾個擴充,都是新拉個分支來寫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徹底穩定了再看看。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.