zoukankan      html  css  js  c++  java
  • 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);
    	
    }


    <?php

    echo md52('123qwe');

    ?>

  • 相关阅读:
    致歉
    [公告]博客园正在对网站程序进行性能优化
    [公告]调整默认发布选项
    网站情况继续汇报
    定制“Server Too Busy”错误信息
    可恶的垃圾广告
    博客园分站服务器故障
    很值得期待—SharePoint "V3.0"新特性
    安装Vistual Studio 2005的小问题
    安装智能陈桥五笔时请小心
  • 原文地址:https://www.cnblogs.com/lein317/p/5067633.html
Copyright © 2011-2022 走看看