PHP扩展开发

经典名著:http://phpbook.sinaapp.com/ 一个小小的示例:
PHP_FUNCTION(say_hello)  
{  
    char *arg = NULL;   
    int arg_len, len;   
    char *strg;  

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",  
        &arg, &arg_len) == FAILURE) {   
        return;   
    }  

    len = spprintf(&strg, 0, "Hello %s/n", arg);   
    RETURN_STRINGL(strg, len, 0);   
}
1. 参数接收: 这里接收函数的参数需要通过zend_parse_parameter函数解析,第一个参数指定用户传入say_hello函数的参数个数,可以通过宏ZEND_NUM_ARGS()生成,TSRMLS_CC用来确保线程安全;第二个参数是一个字符串,每个字母代表一种类型,其中”s”代表char*或者int类型,“b”代表布尔类型,“l”代表long类型,完整的类型映射可以看这里 ;后面几个参数是我们定义的局部变量,用来接收传入的参数值 2. 函数返回值:不能使用C语言原生的return语句,而应该使用Zend API里提供的宏定义,如RETURN_STRINGL返回一个字符串;而RETURN_TRUE返回布尔类型true。
原文地址:https://www.cnblogs.com/trying/p/2863727.html