Annotation of embedaddon/php/ext/spl/tests/array_017.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: SPL: ArrayObject::exchangeArray($this)
! 3: --FILE--
! 4: <?php
! 5:
! 6: class ArrayIteratorEx extends ArrayIterator
! 7: {
! 8: public $pub2 = 1;
! 9: protected $pro2 = 2;
! 10: private $pri2 = 3;
! 11:
! 12: function __construct($ar, $flags = 0)
! 13: {
! 14: echo __METHOD__ . "()\n";
! 15: parent::__construct($ar, $flags);
! 16: $this->imp2 = 4;
! 17: }
! 18:
! 19: function dump()
! 20: {
! 21: echo __METHOD__ . "()\n";
! 22: var_dump(array('Flags'=>$this->getFlags()
! 23: ,'OVars'=>get_object_vars($this)
! 24: ,'$this'=>$this));
! 25: }
! 26:
! 27: function setFlags($flags)
! 28: {
! 29: echo __METHOD__ . "($flags)\n";
! 30: ArrayIterator::setFlags($flags);
! 31: }
! 32: }
! 33:
! 34: class ArrayObjectEx extends ArrayObject
! 35: {
! 36: public $pub1 = 1;
! 37: protected $pro1 = 2;
! 38: private $pri1 = 3;
! 39:
! 40: function __construct($ar = array(), $flags = 0)
! 41: {
! 42: echo __METHOD__ . "()\n";
! 43: parent::__construct($ar, $flags);
! 44: $this->imp1 = 4;
! 45: }
! 46:
! 47: function exchange()
! 48: {
! 49: echo __METHOD__ . "()\n";
! 50: $this->exchangeArray($this);
! 51: }
! 52:
! 53: function dump()
! 54: {
! 55: echo __METHOD__ . "()\n";
! 56: var_dump(array('Flags'=>$this->getFlags()
! 57: ,'OVars'=>get_object_vars($this)
! 58: ,'$this'=>$this));
! 59: }
! 60:
! 61: function show()
! 62: {
! 63: echo __METHOD__ . "()\n";
! 64: foreach($this as $n => $v)
! 65: {
! 66: var_dump(array($n => $v));
! 67: }
! 68: }
! 69:
! 70: function setFlags($flags)
! 71: {
! 72: echo __METHOD__ . "($flags)\n";
! 73: ArrayObject::setFlags($flags);
! 74: }
! 75:
! 76: function getIterator()
! 77: {
! 78: echo __METHOD__ . "()\n";
! 79: $it = new ArrayIteratorEx($this, $this->getFlags());
! 80: $it->dyn2 = 5;
! 81: $it->dump();
! 82: return $it;
! 83: }
! 84: }
! 85:
! 86: function check($obj, $flags)
! 87: {
! 88: echo "===CHECK===\n";
! 89:
! 90: $obj->setFlags($flags);
! 91: $obj->dump();
! 92: $obj->show();
! 93:
! 94: echo "===FOREACH===\n";
! 95:
! 96: $it = $obj->getIterator();
! 97: foreach($it as $n => $v)
! 98: {
! 99: var_dump(array($n => $v));
! 100: }
! 101:
! 102: echo "===PROPERTY===\n";
! 103:
! 104: var_dump($obj->pub1);
! 105: var_dump(isset($obj->a));
! 106: $obj->setFlags($flags | 2);
! 107: var_dump($obj->pub1);
! 108: var_dump(isset($obj->a));
! 109:
! 110: var_dump($it->pub2);
! 111: var_dump(isset($it->pub1));
! 112: $it->setFlags($flags | 2);
! 113: var_dump($it->pub2);
! 114: var_dump(isset($it->pub1));
! 115: }
! 116:
! 117: $obj = new ArrayObjectEx(array(0=>1,'a'=>25, 'pub1'=>42), 0);
! 118: $obj->dyn1 = 5;
! 119:
! 120: check($obj, 0);
! 121: check($obj, 1);
! 122:
! 123: echo "#####EXCHANGE#####\n";
! 124:
! 125: $obj->exchange();
! 126:
! 127: check($obj, 0);
! 128: check($obj, 1);
! 129:
! 130: ?>
! 131: ===DONE===
! 132: <?php exit(0); ?>
! 133: --EXPECTF--
! 134: ArrayObjectEx::__construct()
! 135: ===CHECK===
! 136: ArrayObjectEx::setFlags(0)
! 137: ArrayObjectEx::dump()
! 138: array(3) {
! 139: ["Flags"]=>
! 140: int(0)
! 141: ["OVars"]=>
! 142: array(2) {
! 143: ["a"]=>
! 144: int(25)
! 145: ["pub1"]=>
! 146: int(42)
! 147: }
! 148: ["$this"]=>
! 149: object(ArrayObjectEx)#%d (6) {
! 150: ["pub1"]=>
! 151: int(1)
! 152: ["pro1":protected]=>
! 153: int(2)
! 154: ["pri1":"ArrayObjectEx":private]=>
! 155: int(3)
! 156: ["imp1"]=>
! 157: int(4)
! 158: ["dyn1"]=>
! 159: int(5)
! 160: ["storage":"ArrayObject":private]=>
! 161: array(3) {
! 162: [0]=>
! 163: int(1)
! 164: ["a"]=>
! 165: int(25)
! 166: ["pub1"]=>
! 167: int(42)
! 168: }
! 169: }
! 170: }
! 171: ArrayObjectEx::show()
! 172: ArrayObjectEx::getIterator()
! 173: ArrayIteratorEx::__construct()
! 174: ArrayIteratorEx::dump()
! 175: array(3) {
! 176: ["Flags"]=>
! 177: int(0)
! 178: ["OVars"]=>
! 179: array(2) {
! 180: ["a"]=>
! 181: int(25)
! 182: ["pub1"]=>
! 183: int(42)
! 184: }
! 185: ["$this"]=>
! 186: object(ArrayIteratorEx)#%d (6) {
! 187: ["pub2"]=>
! 188: int(1)
! 189: ["pro2":protected]=>
! 190: int(2)
! 191: ["pri2":"ArrayIteratorEx":private]=>
! 192: int(3)
! 193: ["imp2"]=>
! 194: int(4)
! 195: ["dyn2"]=>
! 196: int(5)
! 197: ["storage":"ArrayIterator":private]=>
! 198: object(ArrayObjectEx)#%d (6) {
! 199: ["pub1"]=>
! 200: int(1)
! 201: ["pro1":protected]=>
! 202: int(2)
! 203: ["pri1":"ArrayObjectEx":private]=>
! 204: int(3)
! 205: ["imp1"]=>
! 206: int(4)
! 207: ["dyn1"]=>
! 208: int(5)
! 209: ["storage":"ArrayObject":private]=>
! 210: array(3) {
! 211: [0]=>
! 212: int(1)
! 213: ["a"]=>
! 214: int(25)
! 215: ["pub1"]=>
! 216: int(42)
! 217: }
! 218: }
! 219: }
! 220: }
! 221: array(1) {
! 222: [0]=>
! 223: int(1)
! 224: }
! 225: array(1) {
! 226: ["a"]=>
! 227: int(25)
! 228: }
! 229: array(1) {
! 230: ["pub1"]=>
! 231: int(42)
! 232: }
! 233: ===FOREACH===
! 234: ArrayObjectEx::getIterator()
! 235: ArrayIteratorEx::__construct()
! 236: ArrayIteratorEx::dump()
! 237: array(3) {
! 238: ["Flags"]=>
! 239: int(0)
! 240: ["OVars"]=>
! 241: array(2) {
! 242: ["a"]=>
! 243: int(25)
! 244: ["pub1"]=>
! 245: int(42)
! 246: }
! 247: ["$this"]=>
! 248: object(ArrayIteratorEx)#%d (6) {
! 249: ["pub2"]=>
! 250: int(1)
! 251: ["pro2":protected]=>
! 252: int(2)
! 253: ["pri2":"ArrayIteratorEx":private]=>
! 254: int(3)
! 255: ["imp2"]=>
! 256: int(4)
! 257: ["dyn2"]=>
! 258: int(5)
! 259: ["storage":"ArrayIterator":private]=>
! 260: object(ArrayObjectEx)#%d (6) {
! 261: ["pub1"]=>
! 262: int(1)
! 263: ["pro1":protected]=>
! 264: int(2)
! 265: ["pri1":"ArrayObjectEx":private]=>
! 266: int(3)
! 267: ["imp1"]=>
! 268: int(4)
! 269: ["dyn1"]=>
! 270: int(5)
! 271: ["storage":"ArrayObject":private]=>
! 272: array(3) {
! 273: [0]=>
! 274: int(1)
! 275: ["a"]=>
! 276: int(25)
! 277: ["pub1"]=>
! 278: int(42)
! 279: }
! 280: }
! 281: }
! 282: }
! 283: array(1) {
! 284: [0]=>
! 285: int(1)
! 286: }
! 287: array(1) {
! 288: ["a"]=>
! 289: int(25)
! 290: }
! 291: array(1) {
! 292: ["pub1"]=>
! 293: int(42)
! 294: }
! 295: ===PROPERTY===
! 296: int(1)
! 297: bool(false)
! 298: ArrayObjectEx::setFlags(2)
! 299: int(1)
! 300: bool(true)
! 301: int(1)
! 302: bool(false)
! 303: ArrayIteratorEx::setFlags(2)
! 304: int(1)
! 305: bool(true)
! 306: ===CHECK===
! 307: ArrayObjectEx::setFlags(1)
! 308: ArrayObjectEx::dump()
! 309: array(3) {
! 310: ["Flags"]=>
! 311: int(1)
! 312: ["OVars"]=>
! 313: array(5) {
! 314: ["pub1"]=>
! 315: int(1)
! 316: ["pro1"]=>
! 317: int(2)
! 318: ["pri1"]=>
! 319: int(3)
! 320: ["imp1"]=>
! 321: int(4)
! 322: ["dyn1"]=>
! 323: int(5)
! 324: }
! 325: ["$this"]=>
! 326: object(ArrayObjectEx)#%d (6) {
! 327: ["pub1"]=>
! 328: int(1)
! 329: ["pro1":protected]=>
! 330: int(2)
! 331: ["pri1":"ArrayObjectEx":private]=>
! 332: int(3)
! 333: ["imp1"]=>
! 334: int(4)
! 335: ["dyn1"]=>
! 336: int(5)
! 337: ["storage":"ArrayObject":private]=>
! 338: array(3) {
! 339: [0]=>
! 340: int(1)
! 341: ["a"]=>
! 342: int(25)
! 343: ["pub1"]=>
! 344: int(42)
! 345: }
! 346: }
! 347: }
! 348: ArrayObjectEx::show()
! 349: ArrayObjectEx::getIterator()
! 350: ArrayIteratorEx::__construct()
! 351: ArrayIteratorEx::dump()
! 352: array(3) {
! 353: ["Flags"]=>
! 354: int(1)
! 355: ["OVars"]=>
! 356: array(5) {
! 357: ["pub2"]=>
! 358: int(1)
! 359: ["pro2"]=>
! 360: int(2)
! 361: ["pri2"]=>
! 362: int(3)
! 363: ["imp2"]=>
! 364: int(4)
! 365: ["dyn2"]=>
! 366: int(5)
! 367: }
! 368: ["$this"]=>
! 369: object(ArrayIteratorEx)#%d (6) {
! 370: ["pub2"]=>
! 371: int(1)
! 372: ["pro2":protected]=>
! 373: int(2)
! 374: ["pri2":"ArrayIteratorEx":private]=>
! 375: int(3)
! 376: ["imp2"]=>
! 377: int(4)
! 378: ["dyn2"]=>
! 379: int(5)
! 380: ["storage":"ArrayIterator":private]=>
! 381: object(ArrayObjectEx)#%d (6) {
! 382: ["pub1"]=>
! 383: int(1)
! 384: ["pro1":protected]=>
! 385: int(2)
! 386: ["pri1":"ArrayObjectEx":private]=>
! 387: int(3)
! 388: ["imp1"]=>
! 389: int(4)
! 390: ["dyn1"]=>
! 391: int(5)
! 392: ["storage":"ArrayObject":private]=>
! 393: array(3) {
! 394: [0]=>
! 395: int(1)
! 396: ["a"]=>
! 397: int(25)
! 398: ["pub1"]=>
! 399: int(42)
! 400: }
! 401: }
! 402: }
! 403: }
! 404: array(1) {
! 405: [0]=>
! 406: int(1)
! 407: }
! 408: array(1) {
! 409: ["a"]=>
! 410: int(25)
! 411: }
! 412: array(1) {
! 413: ["pub1"]=>
! 414: int(42)
! 415: }
! 416: ===FOREACH===
! 417: ArrayObjectEx::getIterator()
! 418: ArrayIteratorEx::__construct()
! 419: ArrayIteratorEx::dump()
! 420: array(3) {
! 421: ["Flags"]=>
! 422: int(1)
! 423: ["OVars"]=>
! 424: array(5) {
! 425: ["pub2"]=>
! 426: int(1)
! 427: ["pro2"]=>
! 428: int(2)
! 429: ["pri2"]=>
! 430: int(3)
! 431: ["imp2"]=>
! 432: int(4)
! 433: ["dyn2"]=>
! 434: int(5)
! 435: }
! 436: ["$this"]=>
! 437: object(ArrayIteratorEx)#%d (6) {
! 438: ["pub2"]=>
! 439: int(1)
! 440: ["pro2":protected]=>
! 441: int(2)
! 442: ["pri2":"ArrayIteratorEx":private]=>
! 443: int(3)
! 444: ["imp2"]=>
! 445: int(4)
! 446: ["dyn2"]=>
! 447: int(5)
! 448: ["storage":"ArrayIterator":private]=>
! 449: object(ArrayObjectEx)#%d (6) {
! 450: ["pub1"]=>
! 451: int(1)
! 452: ["pro1":protected]=>
! 453: int(2)
! 454: ["pri1":"ArrayObjectEx":private]=>
! 455: int(3)
! 456: ["imp1"]=>
! 457: int(4)
! 458: ["dyn1"]=>
! 459: int(5)
! 460: ["storage":"ArrayObject":private]=>
! 461: array(3) {
! 462: [0]=>
! 463: int(1)
! 464: ["a"]=>
! 465: int(25)
! 466: ["pub1"]=>
! 467: int(42)
! 468: }
! 469: }
! 470: }
! 471: }
! 472: array(1) {
! 473: [0]=>
! 474: int(1)
! 475: }
! 476: array(1) {
! 477: ["a"]=>
! 478: int(25)
! 479: }
! 480: array(1) {
! 481: ["pub1"]=>
! 482: int(42)
! 483: }
! 484: ===PROPERTY===
! 485: int(1)
! 486: bool(false)
! 487: ArrayObjectEx::setFlags(3)
! 488: int(1)
! 489: bool(true)
! 490: int(1)
! 491: bool(false)
! 492: ArrayIteratorEx::setFlags(3)
! 493: int(1)
! 494: bool(true)
! 495: #####EXCHANGE#####
! 496: ArrayObjectEx::exchange()
! 497: ===CHECK===
! 498: ArrayObjectEx::setFlags(0)
! 499: ArrayObjectEx::dump()
! 500: array(3) {
! 501: ["Flags"]=>
! 502: int(0)
! 503: ["OVars"]=>
! 504: array(5) {
! 505: ["pub1"]=>
! 506: int(1)
! 507: ["pro1"]=>
! 508: int(2)
! 509: ["pri1"]=>
! 510: int(3)
! 511: ["imp1"]=>
! 512: int(4)
! 513: ["dyn1"]=>
! 514: int(5)
! 515: }
! 516: ["$this"]=>
! 517: object(ArrayObjectEx)#%d (5) {
! 518: ["pub1"]=>
! 519: int(1)
! 520: ["pro1":protected]=>
! 521: int(2)
! 522: ["pri1":"ArrayObjectEx":private]=>
! 523: int(3)
! 524: ["imp1"]=>
! 525: int(4)
! 526: ["dyn1"]=>
! 527: int(5)
! 528: }
! 529: }
! 530: ArrayObjectEx::show()
! 531: ArrayObjectEx::getIterator()
! 532: ArrayIteratorEx::__construct()
! 533: ArrayIteratorEx::dump()
! 534: array(3) {
! 535: ["Flags"]=>
! 536: int(0)
! 537: ["OVars"]=>
! 538: array(4) {
! 539: ["pub1"]=>
! 540: int(1)
! 541: ["pro1"]=>
! 542: int(2)
! 543: ["imp1"]=>
! 544: int(4)
! 545: ["dyn1"]=>
! 546: int(5)
! 547: }
! 548: ["$this"]=>
! 549: object(ArrayIteratorEx)#%d (6) {
! 550: ["pub2"]=>
! 551: int(1)
! 552: ["pro2":protected]=>
! 553: int(2)
! 554: ["pri2":"ArrayIteratorEx":private]=>
! 555: int(3)
! 556: ["imp2"]=>
! 557: int(4)
! 558: ["dyn2"]=>
! 559: int(5)
! 560: ["storage":"ArrayIterator":private]=>
! 561: object(ArrayObjectEx)#%d (5) {
! 562: ["pub1"]=>
! 563: int(1)
! 564: ["pro1":protected]=>
! 565: int(2)
! 566: ["pri1":"ArrayObjectEx":private]=>
! 567: int(3)
! 568: ["imp1"]=>
! 569: int(4)
! 570: ["dyn1"]=>
! 571: int(5)
! 572: }
! 573: }
! 574: }
! 575: array(1) {
! 576: ["pub1"]=>
! 577: int(1)
! 578: }
! 579: array(1) {
! 580: ["imp1"]=>
! 581: int(4)
! 582: }
! 583: array(1) {
! 584: ["dyn1"]=>
! 585: int(5)
! 586: }
! 587: ===FOREACH===
! 588: ArrayObjectEx::getIterator()
! 589: ArrayIteratorEx::__construct()
! 590: ArrayIteratorEx::dump()
! 591: array(3) {
! 592: ["Flags"]=>
! 593: int(0)
! 594: ["OVars"]=>
! 595: array(4) {
! 596: ["pub1"]=>
! 597: int(1)
! 598: ["pro1"]=>
! 599: int(2)
! 600: ["imp1"]=>
! 601: int(4)
! 602: ["dyn1"]=>
! 603: int(5)
! 604: }
! 605: ["$this"]=>
! 606: object(ArrayIteratorEx)#%d (6) {
! 607: ["pub2"]=>
! 608: int(1)
! 609: ["pro2":protected]=>
! 610: int(2)
! 611: ["pri2":"ArrayIteratorEx":private]=>
! 612: int(3)
! 613: ["imp2"]=>
! 614: int(4)
! 615: ["dyn2"]=>
! 616: int(5)
! 617: ["storage":"ArrayIterator":private]=>
! 618: object(ArrayObjectEx)#%d (5) {
! 619: ["pub1"]=>
! 620: int(1)
! 621: ["pro1":protected]=>
! 622: int(2)
! 623: ["pri1":"ArrayObjectEx":private]=>
! 624: int(3)
! 625: ["imp1"]=>
! 626: int(4)
! 627: ["dyn1"]=>
! 628: int(5)
! 629: }
! 630: }
! 631: }
! 632: array(1) {
! 633: ["pub1"]=>
! 634: int(1)
! 635: }
! 636: array(1) {
! 637: ["imp1"]=>
! 638: int(4)
! 639: }
! 640: array(1) {
! 641: ["dyn1"]=>
! 642: int(5)
! 643: }
! 644: ===PROPERTY===
! 645: int(1)
! 646: bool(false)
! 647: ArrayObjectEx::setFlags(2)
! 648: int(1)
! 649: bool(false)
! 650: int(1)
! 651: bool(false)
! 652: ArrayIteratorEx::setFlags(2)
! 653: int(1)
! 654: bool(true)
! 655: ===CHECK===
! 656: ArrayObjectEx::setFlags(1)
! 657: ArrayObjectEx::dump()
! 658: array(3) {
! 659: ["Flags"]=>
! 660: int(1)
! 661: ["OVars"]=>
! 662: array(5) {
! 663: ["pub1"]=>
! 664: int(1)
! 665: ["pro1"]=>
! 666: int(2)
! 667: ["pri1"]=>
! 668: int(3)
! 669: ["imp1"]=>
! 670: int(4)
! 671: ["dyn1"]=>
! 672: int(5)
! 673: }
! 674: ["$this"]=>
! 675: object(ArrayObjectEx)#%d (5) {
! 676: ["pub1"]=>
! 677: int(1)
! 678: ["pro1":protected]=>
! 679: int(2)
! 680: ["pri1":"ArrayObjectEx":private]=>
! 681: int(3)
! 682: ["imp1"]=>
! 683: int(4)
! 684: ["dyn1"]=>
! 685: int(5)
! 686: }
! 687: }
! 688: ArrayObjectEx::show()
! 689: ArrayObjectEx::getIterator()
! 690: ArrayIteratorEx::__construct()
! 691: ArrayIteratorEx::dump()
! 692: array(3) {
! 693: ["Flags"]=>
! 694: int(1)
! 695: ["OVars"]=>
! 696: array(5) {
! 697: ["pub2"]=>
! 698: int(1)
! 699: ["pro2"]=>
! 700: int(2)
! 701: ["pri2"]=>
! 702: int(3)
! 703: ["imp2"]=>
! 704: int(4)
! 705: ["dyn2"]=>
! 706: int(5)
! 707: }
! 708: ["$this"]=>
! 709: object(ArrayIteratorEx)#%d (6) {
! 710: ["pub2"]=>
! 711: int(1)
! 712: ["pro2":protected]=>
! 713: int(2)
! 714: ["pri2":"ArrayIteratorEx":private]=>
! 715: int(3)
! 716: ["imp2"]=>
! 717: int(4)
! 718: ["dyn2"]=>
! 719: int(5)
! 720: ["storage":"ArrayIterator":private]=>
! 721: object(ArrayObjectEx)#%d (5) {
! 722: ["pub1"]=>
! 723: int(1)
! 724: ["pro1":protected]=>
! 725: int(2)
! 726: ["pri1":"ArrayObjectEx":private]=>
! 727: int(3)
! 728: ["imp1"]=>
! 729: int(4)
! 730: ["dyn1"]=>
! 731: int(5)
! 732: }
! 733: }
! 734: }
! 735: array(1) {
! 736: ["pub1"]=>
! 737: int(1)
! 738: }
! 739: array(1) {
! 740: ["imp1"]=>
! 741: int(4)
! 742: }
! 743: array(1) {
! 744: ["dyn1"]=>
! 745: int(5)
! 746: }
! 747: ===FOREACH===
! 748: ArrayObjectEx::getIterator()
! 749: ArrayIteratorEx::__construct()
! 750: ArrayIteratorEx::dump()
! 751: array(3) {
! 752: ["Flags"]=>
! 753: int(1)
! 754: ["OVars"]=>
! 755: array(5) {
! 756: ["pub2"]=>
! 757: int(1)
! 758: ["pro2"]=>
! 759: int(2)
! 760: ["pri2"]=>
! 761: int(3)
! 762: ["imp2"]=>
! 763: int(4)
! 764: ["dyn2"]=>
! 765: int(5)
! 766: }
! 767: ["$this"]=>
! 768: object(ArrayIteratorEx)#%d (6) {
! 769: ["pub2"]=>
! 770: int(1)
! 771: ["pro2":protected]=>
! 772: int(2)
! 773: ["pri2":"ArrayIteratorEx":private]=>
! 774: int(3)
! 775: ["imp2"]=>
! 776: int(4)
! 777: ["dyn2"]=>
! 778: int(5)
! 779: ["storage":"ArrayIterator":private]=>
! 780: object(ArrayObjectEx)#%d (5) {
! 781: ["pub1"]=>
! 782: int(1)
! 783: ["pro1":protected]=>
! 784: int(2)
! 785: ["pri1":"ArrayObjectEx":private]=>
! 786: int(3)
! 787: ["imp1"]=>
! 788: int(4)
! 789: ["dyn1"]=>
! 790: int(5)
! 791: }
! 792: }
! 793: }
! 794: array(1) {
! 795: ["pub1"]=>
! 796: int(1)
! 797: }
! 798: array(1) {
! 799: ["imp1"]=>
! 800: int(4)
! 801: }
! 802: array(1) {
! 803: ["dyn1"]=>
! 804: int(5)
! 805: }
! 806: ===PROPERTY===
! 807: int(1)
! 808: bool(false)
! 809: ArrayObjectEx::setFlags(3)
! 810: int(1)
! 811: bool(false)
! 812: int(1)
! 813: bool(false)
! 814: ArrayIteratorEx::setFlags(3)
! 815: int(1)
! 816: bool(true)
! 817: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>