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/* Test usage variation of gettype() and settype() functions: 12 settype() to object type. 13 Set type of the data to "object" and verify using gettype 14 Following are performed in the listed sequence: 15 get the current type of the variable 16 set the type of the variable to object type 17 dump the variable to see its new data 18 get the new type of the variable 19*/ 20 21/* function to handle catchable errors */ 22function foo($errno, $errstr, $errfile, $errline) { 23// var_dump($errstr); 24 // print error no and error string 25 echo "$errno: $errstr\n"; 26} 27//set the error handler, this is required as 28// settype() would fail with catachable fatal error 29set_error_handler("foo"); 30 31$var1 = "another string"; 32$var2 = array(2,3,4); 33 34class point 35{ 36 var $x; 37 var $y; 38 39 function __construct($x, $y) { 40 $this->x = $x; 41 $this->y = $y; 42 } 43 44 function __toString() { 45 return "ObjectPoint"; 46 } 47} 48 49$var_values = array ( 50 /* nulls */ 51 null, 52 53 /* boolean */ 54 FALSE, 55 TRUE, 56 true, 57 58 /* strings */ 59 "\xFF", 60 "\x66", 61 "\0123", 62 "", 63 '', 64 " ", 65 ' ', 66 /* numerics in the form of string */ 67 '10', 68 "10", 69 "10string", 70 '10string', 71 "1", 72 "-1", 73 "1e2", 74 " 1", 75 "2974394749328742328432", 76 "-1e-2", 77 '1', 78 '-1', 79 '1e2', 80 ' 1', 81 '2974394749328742328432', 82 '-1e-2', 83 "0xff", 84 '0x55', 85 '0XA55', 86 '0X123', 87 "0123", 88 '0123', 89 "-0123", 90 "+0123", 91 '-0123', 92 '+0123', 93 "-0x80001", // invalid numerics as its prefix with sign or have decimal points 94 "+0x80001", 95 "-0x80001.5", 96 "0x80001.5", 97 "@$%#$%^$%^&^", 98 99 /* arrays */ 100 array(), 101 array(NULL), 102 array(1,2,3,4), 103 array(1 => "one", 2 => "two", "3" => "three", "four" => 4), 104 array(1.5, 2.4, 6.5e6), 105 106 /* integers */ 107 -2147483648, // max -ne int value 108 2147483647, 109 2147483649, 110 1232147483649, 111 0x55, 112 0xF674593039, // a hex value > than max int 113 -0X558F, 114 0555, 115 -0555, 116 02224242434343152, // an octal value > than max int 117 118 /* floats */ 119 1e5, 120 -1e5, 121 1E5, 122 -1E5, 123 -1.5, 124 .5, 125 -.5, 126 .5e6, 127 -.5e6, 128 -.5e-6, 129 .5e+6, 130 -.5e+6, 131 .512E6, 132 -.512E6, 133 .512E-6, 134 +.512E-6, 135 .512E+6, 136 -.512E+6, 137 138 new point(NULL, NULL), 139 new point(2.5, 40.5), 140 new point(0, 0), 141); 142 143/* test conversion to object type */ 144$type = "object"; 145 146echo "\n*** Testing gettype() & settype() functions : usage variations ***\n"; 147echo "\n-- Setting type of data to $type --\n"; 148$loop_count = 1; 149foreach ($var_values as $var) { 150 echo "-- Iteration $loop_count --\n"; $loop_count++; 151 152 // get the current data type 153 var_dump( gettype($var) ); 154 155 // convert it to null 156 var_dump( settype($var, $type) ); 157 158 // dump the converted data 159 var_dump( $var ); 160 161 // check the new type after conversion 162 var_dump( gettype($var) ); 163} 164 165echo "Done\n"; 166?> 167--EXPECTF-- 168*** Testing gettype() & settype() functions : usage variations *** 169 170-- Setting type of data to object -- 171-- Iteration 1 -- 172string(4) "NULL" 173bool(true) 174object(stdClass)#4 (0) { 175} 176string(6) "object" 177-- Iteration 2 -- 178string(7) "boolean" 179bool(true) 180object(stdClass)#4 (1) { 181 ["scalar"]=> 182 bool(false) 183} 184string(6) "object" 185-- Iteration 3 -- 186string(7) "boolean" 187bool(true) 188object(stdClass)#4 (1) { 189 ["scalar"]=> 190 bool(true) 191} 192string(6) "object" 193-- Iteration 4 -- 194string(7) "boolean" 195bool(true) 196object(stdClass)#4 (1) { 197 ["scalar"]=> 198 bool(true) 199} 200string(6) "object" 201-- Iteration 5 -- 202string(6) "string" 203bool(true) 204object(stdClass)#4 (1) { 205 ["scalar"]=> 206 string(1) "�" 207} 208string(6) "object" 209-- Iteration 6 -- 210string(6) "string" 211bool(true) 212object(stdClass)#4 (1) { 213 ["scalar"]=> 214 string(1) "f" 215} 216string(6) "object" 217-- Iteration 7 -- 218string(6) "string" 219bool(true) 220object(stdClass)#4 (1) { 221 ["scalar"]=> 222 string(2) " 2233" 224} 225string(6) "object" 226-- Iteration 8 -- 227string(6) "string" 228bool(true) 229object(stdClass)#4 (1) { 230 ["scalar"]=> 231 string(0) "" 232} 233string(6) "object" 234-- Iteration 9 -- 235string(6) "string" 236bool(true) 237object(stdClass)#4 (1) { 238 ["scalar"]=> 239 string(0) "" 240} 241string(6) "object" 242-- Iteration 10 -- 243string(6) "string" 244bool(true) 245object(stdClass)#4 (1) { 246 ["scalar"]=> 247 string(1) " " 248} 249string(6) "object" 250-- Iteration 11 -- 251string(6) "string" 252bool(true) 253object(stdClass)#4 (1) { 254 ["scalar"]=> 255 string(1) " " 256} 257string(6) "object" 258-- Iteration 12 -- 259string(6) "string" 260bool(true) 261object(stdClass)#4 (1) { 262 ["scalar"]=> 263 string(2) "10" 264} 265string(6) "object" 266-- Iteration 13 -- 267string(6) "string" 268bool(true) 269object(stdClass)#4 (1) { 270 ["scalar"]=> 271 string(2) "10" 272} 273string(6) "object" 274-- Iteration 14 -- 275string(6) "string" 276bool(true) 277object(stdClass)#4 (1) { 278 ["scalar"]=> 279 string(8) "10string" 280} 281string(6) "object" 282-- Iteration 15 -- 283string(6) "string" 284bool(true) 285object(stdClass)#4 (1) { 286 ["scalar"]=> 287 string(8) "10string" 288} 289string(6) "object" 290-- Iteration 16 -- 291string(6) "string" 292bool(true) 293object(stdClass)#4 (1) { 294 ["scalar"]=> 295 string(1) "1" 296} 297string(6) "object" 298-- Iteration 17 -- 299string(6) "string" 300bool(true) 301object(stdClass)#4 (1) { 302 ["scalar"]=> 303 string(2) "-1" 304} 305string(6) "object" 306-- Iteration 18 -- 307string(6) "string" 308bool(true) 309object(stdClass)#4 (1) { 310 ["scalar"]=> 311 string(3) "1e2" 312} 313string(6) "object" 314-- Iteration 19 -- 315string(6) "string" 316bool(true) 317object(stdClass)#4 (1) { 318 ["scalar"]=> 319 string(2) " 1" 320} 321string(6) "object" 322-- Iteration 20 -- 323string(6) "string" 324bool(true) 325object(stdClass)#4 (1) { 326 ["scalar"]=> 327 string(22) "2974394749328742328432" 328} 329string(6) "object" 330-- Iteration 21 -- 331string(6) "string" 332bool(true) 333object(stdClass)#4 (1) { 334 ["scalar"]=> 335 string(5) "-1e-2" 336} 337string(6) "object" 338-- Iteration 22 -- 339string(6) "string" 340bool(true) 341object(stdClass)#4 (1) { 342 ["scalar"]=> 343 string(1) "1" 344} 345string(6) "object" 346-- Iteration 23 -- 347string(6) "string" 348bool(true) 349object(stdClass)#4 (1) { 350 ["scalar"]=> 351 string(2) "-1" 352} 353string(6) "object" 354-- Iteration 24 -- 355string(6) "string" 356bool(true) 357object(stdClass)#4 (1) { 358 ["scalar"]=> 359 string(3) "1e2" 360} 361string(6) "object" 362-- Iteration 25 -- 363string(6) "string" 364bool(true) 365object(stdClass)#4 (1) { 366 ["scalar"]=> 367 string(2) " 1" 368} 369string(6) "object" 370-- Iteration 26 -- 371string(6) "string" 372bool(true) 373object(stdClass)#4 (1) { 374 ["scalar"]=> 375 string(22) "2974394749328742328432" 376} 377string(6) "object" 378-- Iteration 27 -- 379string(6) "string" 380bool(true) 381object(stdClass)#4 (1) { 382 ["scalar"]=> 383 string(5) "-1e-2" 384} 385string(6) "object" 386-- Iteration 28 -- 387string(6) "string" 388bool(true) 389object(stdClass)#4 (1) { 390 ["scalar"]=> 391 string(4) "0xff" 392} 393string(6) "object" 394-- Iteration 29 -- 395string(6) "string" 396bool(true) 397object(stdClass)#4 (1) { 398 ["scalar"]=> 399 string(4) "0x55" 400} 401string(6) "object" 402-- Iteration 30 -- 403string(6) "string" 404bool(true) 405object(stdClass)#4 (1) { 406 ["scalar"]=> 407 string(5) "0XA55" 408} 409string(6) "object" 410-- Iteration 31 -- 411string(6) "string" 412bool(true) 413object(stdClass)#4 (1) { 414 ["scalar"]=> 415 string(5) "0X123" 416} 417string(6) "object" 418-- Iteration 32 -- 419string(6) "string" 420bool(true) 421object(stdClass)#4 (1) { 422 ["scalar"]=> 423 string(4) "0123" 424} 425string(6) "object" 426-- Iteration 33 -- 427string(6) "string" 428bool(true) 429object(stdClass)#4 (1) { 430 ["scalar"]=> 431 string(4) "0123" 432} 433string(6) "object" 434-- Iteration 34 -- 435string(6) "string" 436bool(true) 437object(stdClass)#4 (1) { 438 ["scalar"]=> 439 string(5) "-0123" 440} 441string(6) "object" 442-- Iteration 35 -- 443string(6) "string" 444bool(true) 445object(stdClass)#4 (1) { 446 ["scalar"]=> 447 string(5) "+0123" 448} 449string(6) "object" 450-- Iteration 36 -- 451string(6) "string" 452bool(true) 453object(stdClass)#4 (1) { 454 ["scalar"]=> 455 string(5) "-0123" 456} 457string(6) "object" 458-- Iteration 37 -- 459string(6) "string" 460bool(true) 461object(stdClass)#4 (1) { 462 ["scalar"]=> 463 string(5) "+0123" 464} 465string(6) "object" 466-- Iteration 38 -- 467string(6) "string" 468bool(true) 469object(stdClass)#4 (1) { 470 ["scalar"]=> 471 string(8) "-0x80001" 472} 473string(6) "object" 474-- Iteration 39 -- 475string(6) "string" 476bool(true) 477object(stdClass)#4 (1) { 478 ["scalar"]=> 479 string(8) "+0x80001" 480} 481string(6) "object" 482-- Iteration 40 -- 483string(6) "string" 484bool(true) 485object(stdClass)#4 (1) { 486 ["scalar"]=> 487 string(10) "-0x80001.5" 488} 489string(6) "object" 490-- Iteration 41 -- 491string(6) "string" 492bool(true) 493object(stdClass)#4 (1) { 494 ["scalar"]=> 495 string(9) "0x80001.5" 496} 497string(6) "object" 498-- Iteration 42 -- 499string(6) "string" 500bool(true) 501object(stdClass)#4 (1) { 502 ["scalar"]=> 503 string(12) "@$%#$%^$%^&^" 504} 505string(6) "object" 506-- Iteration 43 -- 507string(5) "array" 508bool(true) 509object(stdClass)#4 (0) { 510} 511string(6) "object" 512-- Iteration 44 -- 513string(5) "array" 514bool(true) 515object(stdClass)#4 (1) { 516 ["0"]=> 517 NULL 518} 519string(6) "object" 520-- Iteration 45 -- 521string(5) "array" 522bool(true) 523object(stdClass)#4 (4) { 524 ["0"]=> 525 int(1) 526 ["1"]=> 527 int(2) 528 ["2"]=> 529 int(3) 530 ["3"]=> 531 int(4) 532} 533string(6) "object" 534-- Iteration 46 -- 535string(5) "array" 536bool(true) 537object(stdClass)#4 (4) { 538 ["1"]=> 539 string(3) "one" 540 ["2"]=> 541 string(3) "two" 542 ["3"]=> 543 string(5) "three" 544 ["four"]=> 545 int(4) 546} 547string(6) "object" 548-- Iteration 47 -- 549string(5) "array" 550bool(true) 551object(stdClass)#4 (3) { 552 ["0"]=> 553 float(1.5) 554 ["1"]=> 555 float(2.4) 556 ["2"]=> 557 float(6500000) 558} 559string(6) "object" 560-- Iteration 48 -- 561string(6) "double" 562bool(true) 563object(stdClass)#4 (1) { 564 ["scalar"]=> 565 float(-2147483648) 566} 567string(6) "object" 568-- Iteration 49 -- 569string(7) "integer" 570bool(true) 571object(stdClass)#4 (1) { 572 ["scalar"]=> 573 int(2147483647) 574} 575string(6) "object" 576-- Iteration 50 -- 577string(6) "double" 578bool(true) 579object(stdClass)#4 (1) { 580 ["scalar"]=> 581 float(2147483649) 582} 583string(6) "object" 584-- Iteration 51 -- 585string(6) "double" 586bool(true) 587object(stdClass)#4 (1) { 588 ["scalar"]=> 589 float(1232147483649) 590} 591string(6) "object" 592-- Iteration 52 -- 593string(7) "integer" 594bool(true) 595object(stdClass)#4 (1) { 596 ["scalar"]=> 597 int(85) 598} 599string(6) "object" 600-- Iteration 53 -- 601string(6) "double" 602bool(true) 603object(stdClass)#4 (1) { 604 ["scalar"]=> 605 float(1058513956921) 606} 607string(6) "object" 608-- Iteration 54 -- 609string(7) "integer" 610bool(true) 611object(stdClass)#4 (1) { 612 ["scalar"]=> 613 int(-21903) 614} 615string(6) "object" 616-- Iteration 55 -- 617string(7) "integer" 618bool(true) 619object(stdClass)#4 (1) { 620 ["scalar"]=> 621 int(365) 622} 623string(6) "object" 624-- Iteration 56 -- 625string(7) "integer" 626bool(true) 627object(stdClass)#4 (1) { 628 ["scalar"]=> 629 int(-365) 630} 631string(6) "object" 632-- Iteration 57 -- 633string(6) "double" 634bool(true) 635object(stdClass)#4 (1) { 636 ["scalar"]=> 637 float(80561044571754) 638} 639string(6) "object" 640-- Iteration 58 -- 641string(6) "double" 642bool(true) 643object(stdClass)#4 (1) { 644 ["scalar"]=> 645 float(100000) 646} 647string(6) "object" 648-- Iteration 59 -- 649string(6) "double" 650bool(true) 651object(stdClass)#4 (1) { 652 ["scalar"]=> 653 float(-100000) 654} 655string(6) "object" 656-- Iteration 60 -- 657string(6) "double" 658bool(true) 659object(stdClass)#4 (1) { 660 ["scalar"]=> 661 float(100000) 662} 663string(6) "object" 664-- Iteration 61 -- 665string(6) "double" 666bool(true) 667object(stdClass)#4 (1) { 668 ["scalar"]=> 669 float(-100000) 670} 671string(6) "object" 672-- Iteration 62 -- 673string(6) "double" 674bool(true) 675object(stdClass)#4 (1) { 676 ["scalar"]=> 677 float(-1.5) 678} 679string(6) "object" 680-- Iteration 63 -- 681string(6) "double" 682bool(true) 683object(stdClass)#4 (1) { 684 ["scalar"]=> 685 float(0.5) 686} 687string(6) "object" 688-- Iteration 64 -- 689string(6) "double" 690bool(true) 691object(stdClass)#4 (1) { 692 ["scalar"]=> 693 float(-0.5) 694} 695string(6) "object" 696-- Iteration 65 -- 697string(6) "double" 698bool(true) 699object(stdClass)#4 (1) { 700 ["scalar"]=> 701 float(500000) 702} 703string(6) "object" 704-- Iteration 66 -- 705string(6) "double" 706bool(true) 707object(stdClass)#4 (1) { 708 ["scalar"]=> 709 float(-500000) 710} 711string(6) "object" 712-- Iteration 67 -- 713string(6) "double" 714bool(true) 715object(stdClass)#4 (1) { 716 ["scalar"]=> 717 float(-5.0E-7) 718} 719string(6) "object" 720-- Iteration 68 -- 721string(6) "double" 722bool(true) 723object(stdClass)#4 (1) { 724 ["scalar"]=> 725 float(500000) 726} 727string(6) "object" 728-- Iteration 69 -- 729string(6) "double" 730bool(true) 731object(stdClass)#4 (1) { 732 ["scalar"]=> 733 float(-500000) 734} 735string(6) "object" 736-- Iteration 70 -- 737string(6) "double" 738bool(true) 739object(stdClass)#4 (1) { 740 ["scalar"]=> 741 float(512000) 742} 743string(6) "object" 744-- Iteration 71 -- 745string(6) "double" 746bool(true) 747object(stdClass)#4 (1) { 748 ["scalar"]=> 749 float(-512000) 750} 751string(6) "object" 752-- Iteration 72 -- 753string(6) "double" 754bool(true) 755object(stdClass)#4 (1) { 756 ["scalar"]=> 757 float(5.12E-7) 758} 759string(6) "object" 760-- Iteration 73 -- 761string(6) "double" 762bool(true) 763object(stdClass)#4 (1) { 764 ["scalar"]=> 765 float(5.12E-7) 766} 767string(6) "object" 768-- Iteration 74 -- 769string(6) "double" 770bool(true) 771object(stdClass)#4 (1) { 772 ["scalar"]=> 773 float(512000) 774} 775string(6) "object" 776-- Iteration 75 -- 777string(6) "double" 778bool(true) 779object(stdClass)#4 (1) { 780 ["scalar"]=> 781 float(-512000) 782} 783string(6) "object" 784-- Iteration 76 -- 785string(6) "object" 786bool(true) 787object(point)#1 (2) { 788 ["x"]=> 789 NULL 790 ["y"]=> 791 NULL 792} 793string(6) "object" 794-- Iteration 77 -- 795string(6) "object" 796bool(true) 797object(point)#2 (2) { 798 ["x"]=> 799 float(2.5) 800 ["y"]=> 801 float(40.5) 802} 803string(6) "object" 804-- Iteration 78 -- 805string(6) "object" 806bool(true) 807object(point)#3 (2) { 808 ["x"]=> 809 int(0) 810 ["y"]=> 811 int(0) 812} 813string(6) "object" 814Done 815