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

    原來筆記,就和擼代碼同樣,都很隨性。後來看的代碼和博客多了。發現太隨性了,很難擼出高質量的代碼,很難寫出能看懂的筆記。php

    記筆記是一個梳理知識的過程,能夠表達出本身對該知識的熟悉程度。數組

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

    廢話就很少說了,至於基礎性的,好比如何建立擴展也不在這裏說了,如何寫接收參數的函數,只須要修改函數功能部分。昨天寫的功能部分以下:spa

            

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

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

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

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

b   Boolean
l   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裏貌似木有... .

修改後的代碼以下ci

/*
  
 這裏是功能
 這個函數不接收參數,只有返回值。
 */
 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代碼中這樣調用:資源

<?php
    echo helloworld(1,3);
相關文章
相關標籤/搜索