扩展中的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测试代码:
 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                
                










