PHP拡張開発入門3---->パラメータ付き関数

1644 ワード

ノートは、コードを引っ張るのと同じように、気ままだった.後で見たコードとブログが多くなりました.発見があまりにも気ままで、高品質のコードを出すのが難しく、読めるノートを書くのが難しい.
メモは知識を整理する過程であり、自分の知識に対する熟知度を表現することができる.
今日はコードを引いて、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   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 ... .


 /*
  
  
  , 。
 */
 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);