PHP 扩展开发 之 var_dump
今天模拟php的var_dump函数:入门扩展开发请搜索 如何编写 PHP 扩展 之 我的第一个PHP扩展
模拟var_dump函数,可以输出变量的类型和标量类型的值,这里不再将如何编译什么的了直接重点代码:
扩展C代码:
PHP_FUNCTION(helloc)
{
zval *var;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC "z" &var) == FAILURE)
return;
switch(Z_TYPE_P(var)){
case IS_BOOL:
php_printf("Boolean: %s "Z_LVAL_P(var)?"TURE":"FALSE");
break;
case IS_LONG:
php_printf("Long: %ld "Z_LVAL_P(var));
break;
case IS_DOUBLE:
php_printf("Double: %f "Z_DVAL_P(var));
break;
case IS_STRING:
php_printf("String: ");
PHPWRITE(Z_STRVAL_P(var)Z_STRLEN_P(var));
php_printf(" ");
break;
case IS_ARRAY:
php_printf("Array ");
break;
case IS_object:
php_printf("object ");
break;
case IS_RESOURCE:
php_printf("Resource ");
break;
case IS_NULL:
php_printf("Null ");
break;
default:
php_printf("Unkown Type ");
}
RETURN_TRUE;
}
PHP测试代码:
<?php $info = 1; helloc($info); $info = array(); helloc($info); $info = true; helloc($info);
结果:
Long: 1 Array Boolean: TURE