PHP擴充開發入門3>帶參數的函數

來源:互聯網
上載者:User
原來筆記,就和擼代碼一樣,都很隨性。後來看的代碼和部落格多了。發現太隨性了,很難擼出高品質的代碼,很難寫出能看懂的筆記。

記筆記是一個梳理知識的過程,可以表達出自己對該知識的熟悉程度。

今天擼一段代碼,記錄一下PHP擴充中如何接收參數。

廢話就不多說了,至於基礎性的,比如如何建立擴充也不在這裡說了,如何寫接收參數的函數,只需要修改函數功能部分。昨天寫的功能部分如下:

 /*   這裡是功能 這個函數不接收參數,只有傳回值。 */ PHP_FUNCTION(helloworld){             int  len;    char *strg;          len = spprintf(&strg, 0, "%.78s", "helloworld");    RETURN_STRINGL(strg, len, 0);}

這裡實現接收參數計算a+b的值。首先接收參數的話需要在方法內添加如下代碼

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {        return;    }

這裡接收參數需要瞭解如下內容,這裡接收一個整數型就需要寫入一個'l',接收兩個就寫兩個'll',以此類推,,然後在寫入接收參數後賦值給指定的變數地址,一個參數就寫一個變數,兩個就寫兩個,三個就寫三個一次類推。至於字串和其他的參數,回來同一說明。

b   Booleanl   Integer 整型d   Floating point 浮點型s   String 字串r   Resource 資源a   Array 數組o   Object instance 對象O   Object instance of a specified type 特定類型的對象z   Non-specific zval 任意類型~Z   zval**類型f   表示函數、方法名稱,PHP5.1裡貌似木有... .

修改後的代碼如下

 /*   這裡是功能 這個函數不接收參數,只有傳回值。 */ PHP_FUNCTION(helloworld){    int a;    int b;    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {        return;    }          int c;    c=a+b;    RETURN_LONG(c);}

就這樣,一個加法計算的函數就算完成了。接下來編譯啟動。然後在PHP代碼中這樣調用:

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.