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