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 object type. 20 Set type of the data to "object" 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 object 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 object type */ 159$type = "object"; 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--EXPECT-- 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 object -- 189-- Iteration 1 -- 190string(4) "NULL" 191bool(true) 192object(stdClass)#4 (0) { 193} 194string(6) "object" 195-- Iteration 2 -- 196string(7) "boolean" 197bool(true) 198object(stdClass)#4 (1) { 199 ["scalar"]=> 200 bool(false) 201} 202string(6) "object" 203-- Iteration 3 -- 204string(7) "boolean" 205bool(true) 206object(stdClass)#4 (1) { 207 ["scalar"]=> 208 bool(true) 209} 210string(6) "object" 211-- Iteration 4 -- 212string(7) "boolean" 213bool(true) 214object(stdClass)#4 (1) { 215 ["scalar"]=> 216 bool(true) 217} 218string(6) "object" 219-- Iteration 5 -- 220string(6) "string" 221bool(true) 222object(stdClass)#4 (1) { 223 ["scalar"]=> 224 string(1) "�" 225} 226string(6) "object" 227-- Iteration 6 -- 228string(6) "string" 229bool(true) 230object(stdClass)#4 (1) { 231 ["scalar"]=> 232 string(1) "f" 233} 234string(6) "object" 235-- Iteration 7 -- 236string(6) "string" 237bool(true) 238object(stdClass)#4 (1) { 239 ["scalar"]=> 240 string(2) " 2413" 242} 243string(6) "object" 244-- Iteration 8 -- 245string(6) "string" 246bool(true) 247object(stdClass)#4 (1) { 248 ["scalar"]=> 249 string(0) "" 250} 251string(6) "object" 252-- Iteration 9 -- 253string(6) "string" 254bool(true) 255object(stdClass)#4 (1) { 256 ["scalar"]=> 257 string(0) "" 258} 259string(6) "object" 260-- Iteration 10 -- 261string(6) "string" 262bool(true) 263object(stdClass)#4 (1) { 264 ["scalar"]=> 265 string(1) " " 266} 267string(6) "object" 268-- Iteration 11 -- 269string(6) "string" 270bool(true) 271object(stdClass)#4 (1) { 272 ["scalar"]=> 273 string(1) " " 274} 275string(6) "object" 276-- Iteration 12 -- 277string(6) "string" 278bool(true) 279object(stdClass)#4 (1) { 280 ["scalar"]=> 281 string(2) "10" 282} 283string(6) "object" 284-- Iteration 13 -- 285string(6) "string" 286bool(true) 287object(stdClass)#4 (1) { 288 ["scalar"]=> 289 string(2) "10" 290} 291string(6) "object" 292-- Iteration 14 -- 293string(6) "string" 294bool(true) 295object(stdClass)#4 (1) { 296 ["scalar"]=> 297 string(8) "10string" 298} 299string(6) "object" 300-- Iteration 15 -- 301string(6) "string" 302bool(true) 303object(stdClass)#4 (1) { 304 ["scalar"]=> 305 string(8) "10string" 306} 307string(6) "object" 308-- Iteration 16 -- 309string(6) "string" 310bool(true) 311object(stdClass)#4 (1) { 312 ["scalar"]=> 313 string(1) "1" 314} 315string(6) "object" 316-- Iteration 17 -- 317string(6) "string" 318bool(true) 319object(stdClass)#4 (1) { 320 ["scalar"]=> 321 string(2) "-1" 322} 323string(6) "object" 324-- Iteration 18 -- 325string(6) "string" 326bool(true) 327object(stdClass)#4 (1) { 328 ["scalar"]=> 329 string(3) "1e2" 330} 331string(6) "object" 332-- Iteration 19 -- 333string(6) "string" 334bool(true) 335object(stdClass)#4 (1) { 336 ["scalar"]=> 337 string(2) " 1" 338} 339string(6) "object" 340-- Iteration 20 -- 341string(6) "string" 342bool(true) 343object(stdClass)#4 (1) { 344 ["scalar"]=> 345 string(22) "2974394749328742328432" 346} 347string(6) "object" 348-- Iteration 21 -- 349string(6) "string" 350bool(true) 351object(stdClass)#4 (1) { 352 ["scalar"]=> 353 string(5) "-1e-2" 354} 355string(6) "object" 356-- Iteration 22 -- 357string(6) "string" 358bool(true) 359object(stdClass)#4 (1) { 360 ["scalar"]=> 361 string(1) "1" 362} 363string(6) "object" 364-- Iteration 23 -- 365string(6) "string" 366bool(true) 367object(stdClass)#4 (1) { 368 ["scalar"]=> 369 string(2) "-1" 370} 371string(6) "object" 372-- Iteration 24 -- 373string(6) "string" 374bool(true) 375object(stdClass)#4 (1) { 376 ["scalar"]=> 377 string(3) "1e2" 378} 379string(6) "object" 380-- Iteration 25 -- 381string(6) "string" 382bool(true) 383object(stdClass)#4 (1) { 384 ["scalar"]=> 385 string(2) " 1" 386} 387string(6) "object" 388-- Iteration 26 -- 389string(6) "string" 390bool(true) 391object(stdClass)#4 (1) { 392 ["scalar"]=> 393 string(22) "2974394749328742328432" 394} 395string(6) "object" 396-- Iteration 27 -- 397string(6) "string" 398bool(true) 399object(stdClass)#4 (1) { 400 ["scalar"]=> 401 string(5) "-1e-2" 402} 403string(6) "object" 404-- Iteration 28 -- 405string(6) "string" 406bool(true) 407object(stdClass)#4 (1) { 408 ["scalar"]=> 409 string(4) "0xff" 410} 411string(6) "object" 412-- Iteration 29 -- 413string(6) "string" 414bool(true) 415object(stdClass)#4 (1) { 416 ["scalar"]=> 417 string(4) "0x55" 418} 419string(6) "object" 420-- Iteration 30 -- 421string(6) "string" 422bool(true) 423object(stdClass)#4 (1) { 424 ["scalar"]=> 425 string(5) "0XA55" 426} 427string(6) "object" 428-- Iteration 31 -- 429string(6) "string" 430bool(true) 431object(stdClass)#4 (1) { 432 ["scalar"]=> 433 string(5) "0X123" 434} 435string(6) "object" 436-- Iteration 32 -- 437string(6) "string" 438bool(true) 439object(stdClass)#4 (1) { 440 ["scalar"]=> 441 string(4) "0123" 442} 443string(6) "object" 444-- Iteration 33 -- 445string(6) "string" 446bool(true) 447object(stdClass)#4 (1) { 448 ["scalar"]=> 449 string(4) "0123" 450} 451string(6) "object" 452-- Iteration 34 -- 453string(6) "string" 454bool(true) 455object(stdClass)#4 (1) { 456 ["scalar"]=> 457 string(5) "-0123" 458} 459string(6) "object" 460-- Iteration 35 -- 461string(6) "string" 462bool(true) 463object(stdClass)#4 (1) { 464 ["scalar"]=> 465 string(5) "+0123" 466} 467string(6) "object" 468-- Iteration 36 -- 469string(6) "string" 470bool(true) 471object(stdClass)#4 (1) { 472 ["scalar"]=> 473 string(5) "-0123" 474} 475string(6) "object" 476-- Iteration 37 -- 477string(6) "string" 478bool(true) 479object(stdClass)#4 (1) { 480 ["scalar"]=> 481 string(5) "+0123" 482} 483string(6) "object" 484-- Iteration 38 -- 485string(6) "string" 486bool(true) 487object(stdClass)#4 (1) { 488 ["scalar"]=> 489 string(8) "-0x80001" 490} 491string(6) "object" 492-- Iteration 39 -- 493string(6) "string" 494bool(true) 495object(stdClass)#4 (1) { 496 ["scalar"]=> 497 string(8) "+0x80001" 498} 499string(6) "object" 500-- Iteration 40 -- 501string(6) "string" 502bool(true) 503object(stdClass)#4 (1) { 504 ["scalar"]=> 505 string(10) "-0x80001.5" 506} 507string(6) "object" 508-- Iteration 41 -- 509string(6) "string" 510bool(true) 511object(stdClass)#4 (1) { 512 ["scalar"]=> 513 string(9) "0x80001.5" 514} 515string(6) "object" 516-- Iteration 42 -- 517string(6) "string" 518bool(true) 519object(stdClass)#4 (1) { 520 ["scalar"]=> 521 string(12) "@$%#$%^$%^&^" 522} 523string(6) "object" 524-- Iteration 43 -- 525string(5) "array" 526bool(true) 527object(stdClass)#4 (0) { 528} 529string(6) "object" 530-- Iteration 44 -- 531string(5) "array" 532bool(true) 533object(stdClass)#4 (1) { 534 ["0"]=> 535 NULL 536} 537string(6) "object" 538-- Iteration 45 -- 539string(5) "array" 540bool(true) 541object(stdClass)#4 (4) { 542 ["0"]=> 543 int(1) 544 ["1"]=> 545 int(2) 546 ["2"]=> 547 int(3) 548 ["3"]=> 549 int(4) 550} 551string(6) "object" 552-- Iteration 46 -- 553string(5) "array" 554bool(true) 555object(stdClass)#4 (4) { 556 ["1"]=> 557 string(3) "one" 558 ["2"]=> 559 string(3) "two" 560 ["3"]=> 561 string(5) "three" 562 ["four"]=> 563 int(4) 564} 565string(6) "object" 566-- Iteration 47 -- 567string(5) "array" 568bool(true) 569object(stdClass)#4 (3) { 570 ["0"]=> 571 float(1.5) 572 ["1"]=> 573 float(2.4) 574 ["2"]=> 575 float(6500000) 576} 577string(6) "object" 578-- Iteration 48 -- 579string(6) "double" 580bool(true) 581object(stdClass)#4 (1) { 582 ["scalar"]=> 583 float(-2147483648) 584} 585string(6) "object" 586-- Iteration 49 -- 587string(7) "integer" 588bool(true) 589object(stdClass)#4 (1) { 590 ["scalar"]=> 591 int(2147483647) 592} 593string(6) "object" 594-- Iteration 50 -- 595string(6) "double" 596bool(true) 597object(stdClass)#4 (1) { 598 ["scalar"]=> 599 float(2147483649) 600} 601string(6) "object" 602-- Iteration 51 -- 603string(6) "double" 604bool(true) 605object(stdClass)#4 (1) { 606 ["scalar"]=> 607 float(1232147483649) 608} 609string(6) "object" 610-- Iteration 52 -- 611string(7) "integer" 612bool(true) 613object(stdClass)#4 (1) { 614 ["scalar"]=> 615 int(85) 616} 617string(6) "object" 618-- Iteration 53 -- 619string(6) "double" 620bool(true) 621object(stdClass)#4 (1) { 622 ["scalar"]=> 623 float(1058513956921) 624} 625string(6) "object" 626-- Iteration 54 -- 627string(7) "integer" 628bool(true) 629object(stdClass)#4 (1) { 630 ["scalar"]=> 631 int(-21903) 632} 633string(6) "object" 634-- Iteration 55 -- 635string(7) "integer" 636bool(true) 637object(stdClass)#4 (1) { 638 ["scalar"]=> 639 int(365) 640} 641string(6) "object" 642-- Iteration 56 -- 643string(7) "integer" 644bool(true) 645object(stdClass)#4 (1) { 646 ["scalar"]=> 647 int(-365) 648} 649string(6) "object" 650-- Iteration 57 -- 651string(6) "double" 652bool(true) 653object(stdClass)#4 (1) { 654 ["scalar"]=> 655 float(80561044571754) 656} 657string(6) "object" 658-- Iteration 58 -- 659string(6) "double" 660bool(true) 661object(stdClass)#4 (1) { 662 ["scalar"]=> 663 float(100000) 664} 665string(6) "object" 666-- Iteration 59 -- 667string(6) "double" 668bool(true) 669object(stdClass)#4 (1) { 670 ["scalar"]=> 671 float(-100000) 672} 673string(6) "object" 674-- Iteration 60 -- 675string(6) "double" 676bool(true) 677object(stdClass)#4 (1) { 678 ["scalar"]=> 679 float(100000) 680} 681string(6) "object" 682-- Iteration 61 -- 683string(6) "double" 684bool(true) 685object(stdClass)#4 (1) { 686 ["scalar"]=> 687 float(-100000) 688} 689string(6) "object" 690-- Iteration 62 -- 691string(6) "double" 692bool(true) 693object(stdClass)#4 (1) { 694 ["scalar"]=> 695 float(-1.5) 696} 697string(6) "object" 698-- Iteration 63 -- 699string(6) "double" 700bool(true) 701object(stdClass)#4 (1) { 702 ["scalar"]=> 703 float(0.5) 704} 705string(6) "object" 706-- Iteration 64 -- 707string(6) "double" 708bool(true) 709object(stdClass)#4 (1) { 710 ["scalar"]=> 711 float(-0.5) 712} 713string(6) "object" 714-- Iteration 65 -- 715string(6) "double" 716bool(true) 717object(stdClass)#4 (1) { 718 ["scalar"]=> 719 float(500000) 720} 721string(6) "object" 722-- Iteration 66 -- 723string(6) "double" 724bool(true) 725object(stdClass)#4 (1) { 726 ["scalar"]=> 727 float(-500000) 728} 729string(6) "object" 730-- Iteration 67 -- 731string(6) "double" 732bool(true) 733object(stdClass)#4 (1) { 734 ["scalar"]=> 735 float(-5.0E-7) 736} 737string(6) "object" 738-- Iteration 68 -- 739string(6) "double" 740bool(true) 741object(stdClass)#4 (1) { 742 ["scalar"]=> 743 float(500000) 744} 745string(6) "object" 746-- Iteration 69 -- 747string(6) "double" 748bool(true) 749object(stdClass)#4 (1) { 750 ["scalar"]=> 751 float(-500000) 752} 753string(6) "object" 754-- Iteration 70 -- 755string(6) "double" 756bool(true) 757object(stdClass)#4 (1) { 758 ["scalar"]=> 759 float(512000) 760} 761string(6) "object" 762-- Iteration 71 -- 763string(6) "double" 764bool(true) 765object(stdClass)#4 (1) { 766 ["scalar"]=> 767 float(-512000) 768} 769string(6) "object" 770-- Iteration 72 -- 771string(6) "double" 772bool(true) 773object(stdClass)#4 (1) { 774 ["scalar"]=> 775 float(5.12E-7) 776} 777string(6) "object" 778-- Iteration 73 -- 779string(6) "double" 780bool(true) 781object(stdClass)#4 (1) { 782 ["scalar"]=> 783 float(5.12E-7) 784} 785string(6) "object" 786-- Iteration 74 -- 787string(6) "double" 788bool(true) 789object(stdClass)#4 (1) { 790 ["scalar"]=> 791 float(512000) 792} 793string(6) "object" 794-- Iteration 75 -- 795string(6) "double" 796bool(true) 797object(stdClass)#4 (1) { 798 ["scalar"]=> 799 float(-512000) 800} 801string(6) "object" 802-- Iteration 76 -- 803string(6) "object" 804bool(true) 805object(point)#1 (2) { 806 ["x"]=> 807 NULL 808 ["y"]=> 809 NULL 810} 811string(6) "object" 812-- Iteration 77 -- 813string(6) "object" 814bool(true) 815object(point)#2 (2) { 816 ["x"]=> 817 float(2.5) 818 ["y"]=> 819 float(40.5) 820} 821string(6) "object" 822-- Iteration 78 -- 823string(6) "object" 824bool(true) 825object(point)#3 (2) { 826 ["x"]=> 827 int(0) 828 ["y"]=> 829 int(0) 830} 831string(6) "object" 832-- Iteration 79 -- 833string(4) "NULL" 834bool(true) 835object(stdClass)#4 (0) { 836} 837string(6) "object" 838-- Iteration 80 -- 839string(4) "NULL" 840bool(true) 841object(stdClass)#4 (0) { 842} 843string(6) "object" 844Done 845