您好,欢迎访问一九零五行业门户网

PHP扩展开发入门3>带参数的函数

原来笔记,就和撸代码一样,都很随性。后来看的代码和博客多了。发现太随性了,很难撸出高质量的代码,很难写出能看懂的笔记。
    记笔记是一个梳理知识的过程,可以表达出自己对该知识的熟悉程度。
    今天撸一段代码,记录一下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代码中这样调用:
其它类似信息

推荐信息