Annotation of embedaddon/php/ext/standard/tests/general_functions/gettype_settype_variation6.phpt, revision 1.1.1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>