扩展中的C语言代码

PHP_FUNCTION(hello_dump){
zval *uservar;
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"z",&uservar)==FAILURE){
RETURN_FALSE;
}
switch(Z_TYPE_P(uservar)){
case IS_NULL:
php_printf("NULL\n");
break;
case IS_TRUE:
php_printf("Boolean:%s\n","TRUE");
break;
case IS_FALSE:
php_printf("Boolean:%s\n","FALSE");
break;
case IS_LONG:
php_printf("Long:%ld\n",Z_LVAL_P(uservar));
break;
case IS_DOUBLE:
php_printf("Double:%f\n",Z_DVAL_P(uservar));
break;
case IS_STRING:
php_printf("String:"); PHPWRITE(Z_STRVAL_P(uservar),Z_STRLEN_P(uservar));
php_printf("\n");
break;
case IS_RESOURCE:
php_printf("Resource\n");
break;
case IS_ARRAY:
php_printf("Array\n");
break;
case IS_OBJECT:
php_printf("Object\n");
break;
default:
php_printf("Unknow\n");

}

RETVAL_TRUE;

}

php测试代码:

<?php
hello_dump(NULL);
hello_dump((0==0));
hello_dump((0==1));
hello_dump(1000000000);
hello_dump(1.0);
hello_dump("asd");
$fp=fopen("/root/php/foobar.php","r");
hello_dump($fp);
hello_dump(array(1,2,3));
class A{

}
hello_dump(new A());

输出结果:

NULL
Boolean:TRUE
Boolean:FALSE
Long:1000000000
Double:1.000000
String:asd
Resource
Array
Object