PHP拡張開発入門3---->パラメータ付き関数
1644 ワード
ノートは、コードを引っ張るのと同じように、気ままだった.後で見たコードとブログが多くなりました.発見があまりにも気ままで、高品質のコードを出すのが難しく、読めるノートを書くのが難しい.
メモは知識を整理する過程であり、自分の知識に対する熟知度を表現することができる.
今日はコードを引いて、PHP拡張でパラメータをどのように受信するかを記録します.
くだらないことはあまり言わないで、基礎的なことについては、例えばどのように拡張を作成するかはここでは言わないで、どのように受信パラメータの関数を書くかは、関数の機能部分を修正するだけです.昨日書いた機能部分は以下の通りです.
メモは知識を整理する過程であり、自分の知識に対する熟知度を表現することができる.
今日はコードを引いて、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);