1--TEST-- 2Test gettype() & settype() functions : usage variations 3--SKIPIF-- 4<?php 5if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only"); 6?> 7--INI-- 8precision=14 9--FILE-- 10<?php 11/* Prototype: string gettype ( mixed $var ); 12 Description: Returns the type of the PHP variable var 13 14 Prototype: bool settype ( mixed &$var, string $type ); 15 Description: Set the type of variable var to type 16*/ 17 18/* Test usage variation of gettype() and settype() functions: 19 settype() to string type. 20 Set type of the data to "string" and verify using gettype 21 Following are performed in the listed sequence: 22 get the current type of the variable 23 set the type of the variable to string type 24 dump the variable to see its new data 25 get the new type of the variable 26*/ 27 28/* function to handle catchable errors */ 29function foo($errno, $errstr, $errfile, $errline) { 30// var_dump($errstr); 31 // print error no and error string 32 echo "$errno: $errstr\n"; 33} 34//set the error handler, this is required as 35// settype() would fail with catachable fatal error 36set_error_handler("foo"); 37 38$var1 = "another string"; 39$var2 = array(2,3,4); 40 41// a variable which is unset 42$unset_var = 10.5; 43unset( $unset_var ); 44 45class point 46{ 47 var $x; 48 var $y; 49 50 function __construct($x, $y) { 51 $this->x = $x; 52 $this->y = $y; 53 } 54 55 function __toString() { 56 return "ObjectPoint"; 57 } 58} 59 60$var_values = array ( 61 /* nulls */ 62 null, 63 64 /* boolean */ 65 FALSE, 66 TRUE, 67 true, 68 69 /* strings */ 70 "\xFF", 71 "\x66", 72 "\0123", 73 "", 74 '', 75 " ", 76 ' ', 77 /* numerics in the form of string */ 78 '10', 79 "10", 80 "10string", 81 '10string', 82 "1", 83 "-1", 84 "1e2", 85 " 1", 86 "2974394749328742328432", 87 "-1e-2", 88 '1', 89 '-1', 90 '1e2', 91 ' 1', 92 '2974394749328742328432', 93 '-1e-2', 94 "0xff", 95 '0x55', 96 '0XA55', 97 '0X123', 98 "0123", 99 '0123', 100 "-0123", 101 "+0123", 102 '-0123', 103 '+0123', 104 "-0x80001", // invalid numerics as its prefix with sign or have decimal points 105 "+0x80001", 106 "-0x80001.5", 107 "0x80001.5", 108 "@$%#$%^$%^&^", 109 110 /* arrays */ 111 array(), 112 array(NULL), 113 array(1,2,3,4), 114 array(1 => "one", 2 => "two", "3" => "three", "four" => 4), 115 array(1.5, 2.4, 6.5e6), 116 117 /* integers */ 118 -2147483648, // max -ne int value 119 2147483647, 120 2147483649, 121 1232147483649, 122 0x55, 123 0xF674593039, // a hex value > than max int 124 -0X558F, 125 0555, 126 -0555, 127 02224242434343152, // an octal value > than max int 128 129 /* floats */ 130 1e5, 131 -1e5, 132 1E5, 133 -1E5, 134 -1.5, 135 .5, 136 -.5, 137 .5e6, 138 -.5e6, 139 -.5e-6, 140 .5e+6, 141 -.5e+6, 142 .512E6, 143 -.512E6, 144 .512E-6, 145 +.512E-6, 146 .512E+6, 147 -.512E+6, 148 149 new point(NULL, NULL), 150 new point(2.5, 40.5), 151 new point(0, 0), 152 153 /* undefined/unset vars */ 154 $unset_var, 155 $undef_var 156); 157 158/* test conversion to string type */ 159$type = "string"; 160 161echo "\n*** Testing gettype() & settype() functions : usage variations ***\n"; 162echo "\n-- Setting type of data to $type --\n"; 163$loop_count = 1; 164foreach ($var_values as $var) { 165 echo "-- Iteration $loop_count --\n"; $loop_count++; 166 167 // get the current data type 168 var_dump( gettype($var) ); 169 170 // convert it to null 171 var_dump( settype($var, $type) ); 172 173 // dump the converted data 174 var_dump( $var ); 175 176 // check the new type after conversion 177 var_dump( gettype($var) ); 178} 179 180echo "Done\n"; 181?> 182--EXPECTF-- 1838: Undefined variable: unset_var 1848: Undefined variable: undef_var 185 186*** Testing gettype() & settype() functions : usage variations *** 187 188-- Setting type of data to string -- 189-- Iteration 1 -- 190string(4) "NULL" 191bool(true) 192string(0) "" 193string(6) "string" 194-- Iteration 2 -- 195string(7) "boolean" 196bool(true) 197string(0) "" 198string(6) "string" 199-- Iteration 3 -- 200string(7) "boolean" 201bool(true) 202string(1) "1" 203string(6) "string" 204-- Iteration 4 -- 205string(7) "boolean" 206bool(true) 207string(1) "1" 208string(6) "string" 209-- Iteration 5 -- 210string(6) "string" 211bool(true) 212string(1) "�" 213string(6) "string" 214-- Iteration 6 -- 215string(6) "string" 216bool(true) 217string(1) "f" 218string(6) "string" 219-- Iteration 7 -- 220string(6) "string" 221bool(true) 222string(2) " 2233" 224string(6) "string" 225-- Iteration 8 -- 226string(6) "string" 227bool(true) 228string(0) "" 229string(6) "string" 230-- Iteration 9 -- 231string(6) "string" 232bool(true) 233string(0) "" 234string(6) "string" 235-- Iteration 10 -- 236string(6) "string" 237bool(true) 238string(1) " " 239string(6) "string" 240-- Iteration 11 -- 241string(6) "string" 242bool(true) 243string(1) " " 244string(6) "string" 245-- Iteration 12 -- 246string(6) "string" 247bool(true) 248string(2) "10" 249string(6) "string" 250-- Iteration 13 -- 251string(6) "string" 252bool(true) 253string(2) "10" 254string(6) "string" 255-- Iteration 14 -- 256string(6) "string" 257bool(true) 258string(8) "10string" 259string(6) "string" 260-- Iteration 15 -- 261string(6) "string" 262bool(true) 263string(8) "10string" 264string(6) "string" 265-- Iteration 16 -- 266string(6) "string" 267bool(true) 268string(1) "1" 269string(6) "string" 270-- Iteration 17 -- 271string(6) "string" 272bool(true) 273string(2) "-1" 274string(6) "string" 275-- Iteration 18 -- 276string(6) "string" 277bool(true) 278string(3) "1e2" 279string(6) "string" 280-- Iteration 19 -- 281string(6) "string" 282bool(true) 283string(2) " 1" 284string(6) "string" 285-- Iteration 20 -- 286string(6) "string" 287bool(true) 288string(22) "2974394749328742328432" 289string(6) "string" 290-- Iteration 21 -- 291string(6) "string" 292bool(true) 293string(5) "-1e-2" 294string(6) "string" 295-- Iteration 22 -- 296string(6) "string" 297bool(true) 298string(1) "1" 299string(6) "string" 300-- Iteration 23 -- 301string(6) "string" 302bool(true) 303string(2) "-1" 304string(6) "string" 305-- Iteration 24 -- 306string(6) "string" 307bool(true) 308string(3) "1e2" 309string(6) "string" 310-- Iteration 25 -- 311string(6) "string" 312bool(true) 313string(2) " 1" 314string(6) "string" 315-- Iteration 26 -- 316string(6) "string" 317bool(true) 318string(22) "2974394749328742328432" 319string(6) "string" 320-- Iteration 27 -- 321string(6) "string" 322bool(true) 323string(5) "-1e-2" 324string(6) "string" 325-- Iteration 28 -- 326string(6) "string" 327bool(true) 328string(4) "0xff" 329string(6) "string" 330-- Iteration 29 -- 331string(6) "string" 332bool(true) 333string(4) "0x55" 334string(6) "string" 335-- Iteration 30 -- 336string(6) "string" 337bool(true) 338string(5) "0XA55" 339string(6) "string" 340-- Iteration 31 -- 341string(6) "string" 342bool(true) 343string(5) "0X123" 344string(6) "string" 345-- Iteration 32 -- 346string(6) "string" 347bool(true) 348string(4) "0123" 349string(6) "string" 350-- Iteration 33 -- 351string(6) "string" 352bool(true) 353string(4) "0123" 354string(6) "string" 355-- Iteration 34 -- 356string(6) "string" 357bool(true) 358string(5) "-0123" 359string(6) "string" 360-- Iteration 35 -- 361string(6) "string" 362bool(true) 363string(5) "+0123" 364string(6) "string" 365-- Iteration 36 -- 366string(6) "string" 367bool(true) 368string(5) "-0123" 369string(6) "string" 370-- Iteration 37 -- 371string(6) "string" 372bool(true) 373string(5) "+0123" 374string(6) "string" 375-- Iteration 38 -- 376string(6) "string" 377bool(true) 378string(8) "-0x80001" 379string(6) "string" 380-- Iteration 39 -- 381string(6) "string" 382bool(true) 383string(8) "+0x80001" 384string(6) "string" 385-- Iteration 40 -- 386string(6) "string" 387bool(true) 388string(10) "-0x80001.5" 389string(6) "string" 390-- Iteration 41 -- 391string(6) "string" 392bool(true) 393string(9) "0x80001.5" 394string(6) "string" 395-- Iteration 42 -- 396string(6) "string" 397bool(true) 398string(12) "@$%#$%^$%^&^" 399string(6) "string" 400-- Iteration 43 -- 401string(5) "array" 4028: Array to string conversion 403bool(true) 404string(5) "Array" 405string(6) "string" 406-- Iteration 44 -- 407string(5) "array" 4088: Array to string conversion 409bool(true) 410string(5) "Array" 411string(6) "string" 412-- Iteration 45 -- 413string(5) "array" 4148: Array to string conversion 415bool(true) 416string(5) "Array" 417string(6) "string" 418-- Iteration 46 -- 419string(5) "array" 4208: Array to string conversion 421bool(true) 422string(5) "Array" 423string(6) "string" 424-- Iteration 47 -- 425string(5) "array" 4268: Array to string conversion 427bool(true) 428string(5) "Array" 429string(6) "string" 430-- Iteration 48 -- 431string(6) "double" 432bool(true) 433string(11) "-2147483648" 434string(6) "string" 435-- Iteration 49 -- 436string(7) "integer" 437bool(true) 438string(10) "2147483647" 439string(6) "string" 440-- Iteration 50 -- 441string(6) "double" 442bool(true) 443string(10) "2147483649" 444string(6) "string" 445-- Iteration 51 -- 446string(6) "double" 447bool(true) 448string(13) "1232147483649" 449string(6) "string" 450-- Iteration 52 -- 451string(7) "integer" 452bool(true) 453string(2) "85" 454string(6) "string" 455-- Iteration 53 -- 456string(6) "double" 457bool(true) 458string(13) "1058513956921" 459string(6) "string" 460-- Iteration 54 -- 461string(7) "integer" 462bool(true) 463string(6) "-21903" 464string(6) "string" 465-- Iteration 55 -- 466string(7) "integer" 467bool(true) 468string(3) "365" 469string(6) "string" 470-- Iteration 56 -- 471string(7) "integer" 472bool(true) 473string(4) "-365" 474string(6) "string" 475-- Iteration 57 -- 476string(6) "double" 477bool(true) 478string(14) "80561044571754" 479string(6) "string" 480-- Iteration 58 -- 481string(6) "double" 482bool(true) 483string(6) "100000" 484string(6) "string" 485-- Iteration 59 -- 486string(6) "double" 487bool(true) 488string(7) "-100000" 489string(6) "string" 490-- Iteration 60 -- 491string(6) "double" 492bool(true) 493string(6) "100000" 494string(6) "string" 495-- Iteration 61 -- 496string(6) "double" 497bool(true) 498string(7) "-100000" 499string(6) "string" 500-- Iteration 62 -- 501string(6) "double" 502bool(true) 503string(4) "-1.5" 504string(6) "string" 505-- Iteration 63 -- 506string(6) "double" 507bool(true) 508string(3) "0.5" 509string(6) "string" 510-- Iteration 64 -- 511string(6) "double" 512bool(true) 513string(4) "-0.5" 514string(6) "string" 515-- Iteration 65 -- 516string(6) "double" 517bool(true) 518string(6) "500000" 519string(6) "string" 520-- Iteration 66 -- 521string(6) "double" 522bool(true) 523string(7) "-500000" 524string(6) "string" 525-- Iteration 67 -- 526string(6) "double" 527bool(true) 528string(7) "-5.0E-7" 529string(6) "string" 530-- Iteration 68 -- 531string(6) "double" 532bool(true) 533string(6) "500000" 534string(6) "string" 535-- Iteration 69 -- 536string(6) "double" 537bool(true) 538string(7) "-500000" 539string(6) "string" 540-- Iteration 70 -- 541string(6) "double" 542bool(true) 543string(6) "512000" 544string(6) "string" 545-- Iteration 71 -- 546string(6) "double" 547bool(true) 548string(7) "-512000" 549string(6) "string" 550-- Iteration 72 -- 551string(6) "double" 552bool(true) 553string(7) "5.12E-7" 554string(6) "string" 555-- Iteration 73 -- 556string(6) "double" 557bool(true) 558string(7) "5.12E-7" 559string(6) "string" 560-- Iteration 74 -- 561string(6) "double" 562bool(true) 563string(6) "512000" 564string(6) "string" 565-- Iteration 75 -- 566string(6) "double" 567bool(true) 568string(7) "-512000" 569string(6) "string" 570-- Iteration 76 -- 571string(6) "object" 572bool(true) 573string(11) "ObjectPoint" 574string(6) "string" 575-- Iteration 77 -- 576string(6) "object" 577bool(true) 578string(11) "ObjectPoint" 579string(6) "string" 580-- Iteration 78 -- 581string(6) "object" 582bool(true) 583string(11) "ObjectPoint" 584string(6) "string" 585-- Iteration 79 -- 586string(4) "NULL" 587bool(true) 588string(0) "" 589string(6) "string" 590-- Iteration 80 -- 591string(4) "NULL" 592bool(true) 593string(0) "" 594string(6) "string" 595Done 596