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);
相关文章
相关标签/搜索