php扩展开发 全局变量,php 扩展调用 php 标准函数 及 操作全局变量

PHP_FUNCTION(md52)

{

zval **strtomd5;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &strtomd5) != SUCCESS))

{

WRONG_PARAM_COUNT;

}

zval *funname,*ret_ptr = NULL;

MAKE_STD_ZVAL(funname);

ZVAL_STRING(funname, "md5", 1);

zval **param[1];

param[0] = strtomd5;

call_user_function_ex(EG(function_table), NULL, funname, &ret_ptr, 1, param, 0, EG(active_symbol_table));

//call_user_function_ex(EG(function_table), NULL, funname, &ret_ptr, 1, param, 0, NULL);

zval *new_variable;

MAKE_STD_ZVAL(new_variable);

ZVAL_LONG(new_variable,317);

ZEND_SET_SYMBOL(&EG(symbol_table), "new_variable_name", new_variable);

RETVAL_ZVAL(ret_ptr, 1, 0);

zval_ptr_dtor(&funname);

MAKE_STD_ZVAL(funname);

ZVAL_STRING(funname, "gg", 1);

char *string_contents = "new_variable_name";

zval *var_name;

MAKE_STD_ZVAL(var_name);

ZVAL_STRING(var_name, string_contents, 1);

zend_printf("c_ext *strtomd5 = %s, func=%s\n", var_name->value.str.val , funname->value.str.val);

param[0] = &var_name;

if(call_user_function_ex(EG(function_table), NULL, funname, &ret_ptr, 1, param, 0, EG(active_symbol_table)) != SUCCESS)

{

zend_error(E_ERROR, "Function call failed");

}

zend_printf("c_ext new_variable = %d\n", new_variable->value.lval);

efree(funname);

efree(var_name);

}

echo md52('123qwe');

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值