File:
[ELWIX - Embedded LightWeight unIX -] /
embedaddon /
php /
ext /
standard /
tests /
general_functions /
var_dump_64bit.phpt
Revision
1.1.1.1 (vendor branch):
download - view:
text,
annotated -
select for diffs -
revision graph
Tue Feb 21 23:48:04 2012 UTC (12 years, 6 months ago) by
misho
Branches:
php,
MAIN
CVS tags:
v5_4_3elwix,
v5_4_29p0,
v5_4_29,
v5_4_20p0,
v5_4_20,
v5_4_17p0,
v5_4_17,
v5_3_10,
HEAD
php
--TEST--
Test var_dump() function
--SKIPIF--
<?php
if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
?>
--INI--
precision=14
--FILE--
<?php
/* Prototype: void var_dump ( mixed $expression [, mixed $expression [, $...]] );
Description: Displays structured information about one or more expressions that includes its type and value.
*/
/* Prototype: void check_vardump( $variables );
Description: use var_dump() to display the variables */
function check_vardump( $variables ) {
$counter = 1;
foreach( $variables as $variable ) {
echo "-- Iteration $counter --\n";
var_dump($variable);
$counter++;
}
}
echo "\n*** Testing var_dump() on integer variables ***\n";
$integers = array (
0, // zero as argument
000000123, //octal value of 83
123000000,
-00000123, //octal value of 83
-12300000,
range(1,10), // positive values
range(-1,-10), // negative values
+2147483647, // max positive integer
+2147483648, // max positive integer + 1
-2147483648, // min range of integer
-2147483647, // min range of integer + 1
0x7FFFFFFF, // max positive hexadecimal integer
-0x80000000, // min range of hexadecimal integer
017777777777, // max posotive octal integer
-020000000000 // min range of octal integer
);
/* calling check_vardump() to display contents of integer variables
using var_dump() */
check_vardump($integers);
echo "\n*** Testing var_dump() on float variables ***\n";
$floats = array (
-0.0,
+0.0,
1.234,
-1.234,
-2.000000,
000002.00,
-.5,
.567,
-.6700000e-3,
-.6700000E+3,
.6700000E+3,
.6700000e+3,
-4.10003e-3,
-4.10003E+3,
4.100003e-3,
4.100003E+3,
1e5,
-1e5,
1e-5,
-1e-5,
1e+5,
-1e+5,
1E5,
-1E5,
1E+5,
-1E+5,
1E-5,
-1E-5,
-0x80000001, // float value, beyond max negative int
0x80000001, // float value, beyond max positive int
020000000001, // float value, beyond max positive int
-020000000001 // float value, beyond max negative int
);
/* calling check_vardump() to display contents of float variables
using var_dump() */
check_vardump($floats);
echo "\n*** Testing var_dump() on string variables ***\n";
$strings = array (
"",
'',
" ",
' ',
"0",
"\0",
'\0',
"\t",
'\t',
"PHP",
'PHP',
"abcd\x0n1234\x0005678\x0000efgh\xijkl", // strings with hexadecimal NULL
"abcd\0efgh\0ijkl\x00mnop\x000qrst\00uvwx\0000yz", // strings with octal NULL
"1234\t\n5678\n\t9100\rabcda" // strings with escape characters
);
/* calling check_vardump() to display contents of strings
using var_dump() */
check_vardump($strings);
echo "\n*** Testing var_dump() on boolean variables ***\n";
$booleans = array (
TRUE,
FALSE,
true,
false
);
/* calling check_vardump() to display boolean variables
using var_dump() */
check_vardump($booleans);
echo "\n*** Testing var_dump() on array variables ***\n";
$arrays = array (
array(),
array(NULL),
array(null),
array(true),
array(""),
array(''),
array(array(), array()),
array(array(1, 2), array('a', 'b')),
array(1 => 'One'),
array("test" => "is_array"),
array(0),
array(-1),
array(10.5, 5.6),
array("string", "test"),
array('string', 'test'),
);
/* calling check_vardump() to display contents of an array
using var_dump() */
check_vardump($arrays);
echo "\n*** Testing var_dump() on object variables ***\n";
class object_class
{
var $value;
public $public_var1 = 10;
private $private_var1 = 20;
private $private_var2;
protected $protected_var1 = "string_1";
protected $protected_var2;
function object_class ( ) {
$this->value = 50;
$this->public_var2 = 11;
$this->private_var2 = 21;
$this->protected_var2 = "string_2";
}
public function foo1() {
echo "foo1() is called\n";
}
protected function foo2() {
echo "foo2() is called\n";
}
private function foo3() {
echo "foo3() is called\n";
}
}
/* class with no member */
class no_member_class {
// no members
}
/* class with member as object of other class */
class contains_object_class
{
var $p = 30;
var $class_object1;
public $class_object2;
private $class_object3;
protected $class_object4;
var $no_member_class_object;
public function func() {
echo "func() is called \n";
}
function contains_object_class () {
$this->class_object1 = new object_class();
$this->class_object2 = new object_class();
$this->class_object3 = $this->class_object1;
$this->class_object4 = $this->class_object2;
$this->no_member_class_object = new no_member_class();
$this->class_object5 = $this; //recursive reference
}
}
/* objects of different classes */
$obj = new contains_object_class;
$temp_class_obj = new object_class();
/* object which is unset */
$unset_obj = new object_class();
unset($unset_obj);
$objects = array (
new object_class,
new no_member_class,
new contains_object_class,
$obj,
$obj->class_object1,
$obj->class_object2,
$obj->no_member_class_object,
$temp_class_obj,
@$unset_obj
);
/* calling check_vardump() to display contents of the objects
using var_dump() */
check_vardump($objects);
echo "\n** Testing var_dump() on objects having circular reference **\n";
$recursion_obj1 = new object_class();
$recursion_obj2 = new object_class();
$recursion_obj1->obj = &$recursion_obj2; //circular reference
$recursion_obj2->obj = &$recursion_obj1; //circular reference
var_dump($recursion_obj2);
echo "\n*** Testing var_dump() on resources ***\n";
/* file type resource */
$file_handle = fopen(__FILE__, "r");
/* directory type resource */
$dir_handle = opendir( dirname(__FILE__) );
$resources = array (
$file_handle,
$dir_handle
);
/* calling check_vardump() to display the resource content type
using var_dump() */
check_vardump($resources);
echo "\n*** Testing var_dump() on different combinations of scalar
and non-scalar variables ***\n";
/* a variable which is unset */
$unset_var = 10.5;
unset($unset_var);
/* unset file type resource */
unset($file_handle);
$variations = array (
array( 123, -1.2345, "a" ),
array( "d", array(1, 3, 5), true, null),
array( new no_member_class, array(), false, 0 ),
array( -0.00, "Where am I?", array(7,8,9), TRUE, 'A', 987654321 ),
array( @$unset_var, 2.E+10, 100-20.9, 000004.599998 ), //unusual data
array( "array(1,2,3,4)1.0000002TRUE", @$file_handle, 111333.00+45e5, '/00\7')
);
/* calling check_vardump() to display combinations of scalar and
non-scalar variables using var_dump() */
check_vardump($variations);
echo "\n*** Testing var_dump() on miscelleneous input arguments ***\n";
$misc_values = array (
@$unset_var,
NULL, // NULL argument
@$undef_variable, //undefined variable
null
);
/* calling check_vardump() to display miscelleneous data using var_dump() */
check_vardump($misc_values);
echo "\n*** Testing var_dump() on multiple arguments ***\n";
var_dump( $integers, $floats, $strings, $arrays, $booleans, $resources,
$objects, $misc_values, $variations );
/* checking var_dump() on functions */
echo "\n*** Testing var_dump() on anonymous functions ***\n";
$newfunc = create_function('$a,$b', 'return "$a * $b = " . ($a * $b);');
echo "New anonymous function: $newfunc\n";
var_dump( $newfunc(2, 3) );
/* creating anonymous function dynamically */
var_dump( create_function('$a', 'return "$a * $a = " . ($a * $b);') );
echo "\n*** Testing error conditions ***\n";
//passing zero argument
var_dump();
/* closing resource handle used */
closedir($dir_handle);
echo "Done\n";
?>
--EXPECTF--
*** Testing var_dump() on integer variables ***
-- Iteration 1 --
int(0)
-- Iteration 2 --
int(83)
-- Iteration 3 --
int(123000000)
-- Iteration 4 --
int(-83)
-- Iteration 5 --
int(-12300000)
-- Iteration 6 --
array(10) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
[9]=>
int(10)
}
-- Iteration 7 --
array(10) {
[0]=>
int(-1)
[1]=>
int(-2)
[2]=>
int(-3)
[3]=>
int(-4)
[4]=>
int(-5)
[5]=>
int(-6)
[6]=>
int(-7)
[7]=>
int(-8)
[8]=>
int(-9)
[9]=>
int(-10)
}
-- Iteration 8 --
int(2147483647)
-- Iteration 9 --
int(2147483648)
-- Iteration 10 --
int(-2147483648)
-- Iteration 11 --
int(-2147483647)
-- Iteration 12 --
int(2147483647)
-- Iteration 13 --
int(-2147483648)
-- Iteration 14 --
int(2147483647)
-- Iteration 15 --
int(-2147483648)
*** Testing var_dump() on float variables ***
-- Iteration 1 --
float(0)
-- Iteration 2 --
float(0)
-- Iteration 3 --
float(1.234)
-- Iteration 4 --
float(-1.234)
-- Iteration 5 --
float(-2)
-- Iteration 6 --
float(2)
-- Iteration 7 --
float(-0.5)
-- Iteration 8 --
float(0.567)
-- Iteration 9 --
float(-0.00067)
-- Iteration 10 --
float(-670)
-- Iteration 11 --
float(670)
-- Iteration 12 --
float(670)
-- Iteration 13 --
float(-0.00410003)
-- Iteration 14 --
float(-4100.03)
-- Iteration 15 --
float(0.004100003)
-- Iteration 16 --
float(4100.003)
-- Iteration 17 --
float(100000)
-- Iteration 18 --
float(-100000)
-- Iteration 19 --
float(1.0E-5)
-- Iteration 20 --
float(-1.0E-5)
-- Iteration 21 --
float(100000)
-- Iteration 22 --
float(-100000)
-- Iteration 23 --
float(100000)
-- Iteration 24 --
float(-100000)
-- Iteration 25 --
float(100000)
-- Iteration 26 --
float(-100000)
-- Iteration 27 --
float(1.0E-5)
-- Iteration 28 --
float(-1.0E-5)
-- Iteration 29 --
int(-2147483649)
-- Iteration 30 --
int(2147483649)
-- Iteration 31 --
int(2147483649)
-- Iteration 32 --
int(-2147483649)
*** Testing var_dump() on string variables ***
-- Iteration 1 --
string(0) ""
-- Iteration 2 --
string(0) ""
-- Iteration 3 --
string(1) " "
-- Iteration 4 --
string(1) " "
-- Iteration 5 --
string(1) "0"
-- Iteration 6 --
string(1) "