1--TEST-- 2Test debug_zval_dump() function : usage variations 3--FILE-- 4<?php 5/* Prototype: void debug_zval_dump ( mixed $variable ); 6 Description: Dumps a string representation of an internal zend value 7 to output. 8*/ 9 10echo "*** Testing debug_zval_dump() on functions ***\n"; 11echo "--- Variation 1: global variable inside a function ---\n"; 12$global_var = 10; //declaring global variable 13 14/* function to dump reference count of global variable,$global_var 15 and local variable,$local_var */ 16function dump_globalvar( &$local_var ) { 17 global $global_var; 18 echo "\n-- Value of local variable inside dump_globalvar() --\n"; 19 debug_zval_dump( $local_var ); 20 echo "\n-- Value of global variable inside dump_globalvar() --\n"; 21 debug_zval_dump( $global_var ); 22} 23/* dump value and reference count of $global_var using debug_zval_dump() */ 24echo "\n-- Value of global variable, before calling dump_globalvar() --\n"; 25debug_zval_dump( $global_var ); 26 27/* calling function dump_globalvar() to check the reference count of local 28 and global variables inside the function */ 29dump_globalvar( $global_var ); 30 31/* dump value and reference count of $global_var after exiting function 32 dump_globalvar(); 33 expected: reference count of $global_var should remain the same as 34 before calling dump_globalvar() function */ 35echo "\n-- Value of global variable, after exiting dump_globalvar() --\n"; 36debug_zval_dump( $global_var ); 37 38echo "\n--- Variation 2: one variable references another ---\n"; 39$first_var = 10; 40/* dump value and reference count of $first_var */ 41echo "\n-- Value of \$first_var: --\n"; 42debug_zval_dump($first_var); 43 44/* $ref_first_var references $first_var */ 45$ref_first_var = &$var_1; 46 47echo "\n-- Value of \$ref_first_var --\n"; 48debug_zval_dump($ref_first_var); 49echo "\n-- Value of \$first_var --\n"; 50debug_zval_dump($first_var); 51 52unset($ref_first_var); 53 54/* dump value and reference count of $first_var, $ref_first_var 55 here $ref_first_var is unset */ 56echo "\n-- Value of \$ref_first_var --\n"; 57debug_zval_dump($ref_first_var); 58echo "\n-- Value of \$first_var --\n"; 59debug_zval_dump($first_var); 60 61echo "\n--- Variation 3: multiple references of variables ---\n"; 62$var_1 = 10; 63$var_2 = &$var_1; 64$var_3 = &$var_2; 65echo "\n-- Value of \$var_1: (before referencing) --\n"; 66debug_zval_dump($var_1); 67echo "\n-- Value of \$var_2: (referencing var_1) --\n"; 68debug_zval_dump($var_2); 69echo "\n-- Value of \$var_3: (referencing var_2) --\n"; 70debug_zval_dump($var_3); 71 72/* unsetting $var_3 */ 73unset($var_3); 74echo "\n-- Value of \$var_3: (after unsetting var_3) --\n"; 75debug_zval_dump($var_3); 76echo "\n-- Value of \$var_2: --\n"; 77debug_zval_dump($var_2); 78echo "\n-- Value of \$var_3: --\n"; 79debug_zval_dump($var_1); 80 81/* unsetting $var_1 */ 82unset($var_1); 83echo "\n-- Value of \$var_1: (after unsetting variable_1) --\n"; 84debug_zval_dump($var_1); 85echo "\n-- Value of \$var_2: --\n"; 86debug_zval_dump($var_2); 87 88echo "\n*** Testing debug_zval_dump() on miscelleneous input arguments ***\n"; 89/* unset a variable */ 90$unset_var = 10.5; 91unset($unset_var); 92 93$misc_values = array ( 94 /* nulls */ 95 NULL, 96 null, 97 98 /* unset variable */ 99 @$unset_var, 100 101 /* undefined variable */ 102 @$undef_var, 103 104 /* mixed types */ 105 @TRUE123, 106 "123string", 107 "string123", 108 "NULLstring" 109); 110/* loop to display the variables and its reference count using 111 debug_zval_dump() */ 112$counter = 1; 113foreach( $misc_values as $value ) { 114 echo "-- Iteration $counter --\n"; 115 debug_zval_dump( $value ); 116 $counter++; 117} 118 119echo "Done\n"; 120?> 121 122--EXPECTF-- 123*** Testing debug_zval_dump() on functions *** 124--- Variation 1: global variable inside a function --- 125 126-- Value of global variable, before calling dump_globalvar() -- 127long(10) refcount(2) 128 129-- Value of local variable inside dump_globalvar() -- 130long(10) refcount(1) 131 132-- Value of global variable inside dump_globalvar() -- 133long(10) refcount(1) 134 135-- Value of global variable, after exiting dump_globalvar() -- 136long(10) refcount(2) 137 138--- Variation 2: one variable references another --- 139 140-- Value of $first_var: -- 141long(10) refcount(2) 142 143-- Value of $ref_first_var -- 144NULL refcount(1) 145 146-- Value of $first_var -- 147long(10) refcount(2) 148 149-- Value of $ref_first_var -- 150 151Notice: Undefined variable: ref_first_var in %s on line %d 152NULL refcount(1) 153 154-- Value of $first_var -- 155long(10) refcount(2) 156 157--- Variation 3: multiple references of variables --- 158 159-- Value of $var_1: (before referencing) -- 160long(10) refcount(1) 161 162-- Value of $var_2: (referencing var_1) -- 163long(10) refcount(1) 164 165-- Value of $var_3: (referencing var_2) -- 166long(10) refcount(1) 167 168-- Value of $var_3: (after unsetting var_3) -- 169 170Notice: Undefined variable: var_3 in %s on line %d 171NULL refcount(1) 172 173-- Value of $var_2: -- 174long(10) refcount(1) 175 176-- Value of $var_3: -- 177long(10) refcount(1) 178 179-- Value of $var_1: (after unsetting variable_1) -- 180 181Notice: Undefined variable: var_1 in %s on line %d 182NULL refcount(1) 183 184-- Value of $var_2: -- 185long(10) refcount(2) 186 187*** Testing debug_zval_dump() on miscelleneous input arguments *** 188-- Iteration 1 -- 189NULL refcount(3) 190-- Iteration 2 -- 191NULL refcount(3) 192-- Iteration 3 -- 193NULL refcount(1) 194-- Iteration 4 -- 195NULL refcount(1) 196-- Iteration 5 -- 197string(7) "TRUE123" refcount(3) 198-- Iteration 6 -- 199string(9) "123string" refcount(3) 200-- Iteration 7 -- 201string(9) "string123" refcount(3) 202-- Iteration 8 -- 203string(10) "NULLstring" refcount(3) 204Done 205