Annotation of embedaddon/php/tests/classes/array_access_010.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: ZE2 ArrayAccess and ArrayReferenceProxy with references
        !             3: --FILE--
        !             4: <?php 
        !             5: 
        !             6: // NOTE: This will become part of SPL
        !             7: 
        !             8: class ArrayReferenceProxy implements ArrayAccess
        !             9: {
        !            10:        private $object;
        !            11:        private $element;
        !            12:        
        !            13:        function __construct(ArrayAccess $object, array &$element)
        !            14:        {
        !            15:                echo __METHOD__ . "($element)\n";
        !            16:                $this->object = $object;
        !            17:                $this->element = &$element;
        !            18:        }
        !            19: 
        !            20:        function offsetExists($index) {
        !            21:                echo __METHOD__ . "($this->element, $index)\n";
        !            22:                return array_key_exists($index, $this->element);
        !            23:        }
        !            24: 
        !            25:        function offsetGet($index) {
        !            26:                echo __METHOD__ . "($this->element, $index)\n";
        !            27:                return isset($this->element[$index]) ? $this->element[$index] : NULL;
        !            28:        }
        !            29: 
        !            30:        function offsetSet($index, $value) {
        !            31:                echo __METHOD__ . "($this->element, $index, $value)\n";
        !            32:                $this->element[$index] = $value;
        !            33:        }
        !            34: 
        !            35:        function offsetUnset($index) {
        !            36:                echo __METHOD__ . "($this->element, $index)\n";
        !            37:                unset($this->element[$index]);
        !            38:        }
        !            39: }
        !            40: 
        !            41: class Peoples implements ArrayAccess
        !            42: {
        !            43:        public $person;
        !            44:        
        !            45:        function __construct()
        !            46:        {
        !            47:                $this->person = array(array('name'=>'Foo'));
        !            48:        }
        !            49: 
        !            50:        function offsetExists($index)
        !            51:        {
        !            52:                return array_key_exists($index, $this->person);
        !            53:        }
        !            54: 
        !            55:        function offsetGet($index)
        !            56:        {
        !            57:                return new ArrayReferenceProxy($this, $this->person[$index]);
        !            58:        }
        !            59: 
        !            60:        function offsetSet($index, $value)
        !            61:        {
        !            62:                $this->person[$index] = $value;
        !            63:        }
        !            64: 
        !            65:        function offsetUnset($index)
        !            66:        {
        !            67:                unset($this->person[$index]);
        !            68:        }
        !            69: }
        !            70: 
        !            71: $people = new Peoples;
        !            72: 
        !            73: var_dump($people->person[0]['name']);
        !            74: $people->person[0]['name'] = $people->person[0]['name'] . 'Bar';
        !            75: var_dump($people->person[0]['name']);
        !            76: $people->person[0]['name'] .= 'Baz';
        !            77: var_dump($people->person[0]['name']);
        !            78: 
        !            79: echo "===ArrayOverloading===\n";
        !            80: 
        !            81: $people = new Peoples;
        !            82: 
        !            83: var_dump($people[0]);
        !            84: var_dump($people[0]['name']);
        !            85: $people[0]['name'] = 'FooBar';
        !            86: var_dump($people[0]['name']);
        !            87: $people[0]['name'] = $people->person[0]['name'] . 'Bar';
        !            88: var_dump($people[0]['name']);
        !            89: $people[0]['name'] .= 'Baz';
        !            90: var_dump($people[0]['name']);
        !            91: unset($people[0]['name']);
        !            92: var_dump($people[0]);
        !            93: var_dump($people[0]['name']);
        !            94: $people[0]['name'] = 'BlaBla';
        !            95: var_dump($people[0]['name']);
        !            96: 
        !            97: ?>
        !            98: ===DONE===
        !            99: <?php exit(0); ?>
        !           100: --EXPECTF--
        !           101: string(3) "Foo"
        !           102: string(6) "FooBar"
        !           103: string(9) "FooBarBaz"
        !           104: ===ArrayOverloading===
        !           105: ArrayReferenceProxy::__construct(Array)
        !           106: object(ArrayReferenceProxy)#%d (2) {
        !           107:   ["object":"ArrayReferenceProxy":private]=>
        !           108:   object(Peoples)#%d (1) {
        !           109:     ["person"]=>
        !           110:     array(1) {
        !           111:       [0]=>
        !           112:       &array(1) {
        !           113:         ["name"]=>
        !           114:         string(3) "Foo"
        !           115:       }
        !           116:     }
        !           117:   }
        !           118:   ["element":"ArrayReferenceProxy":private]=>
        !           119:   &array(1) {
        !           120:     ["name"]=>
        !           121:     string(3) "Foo"
        !           122:   }
        !           123: }
        !           124: ArrayReferenceProxy::__construct(Array)
        !           125: ArrayReferenceProxy::offsetGet(Array, name)
        !           126: string(3) "Foo"
        !           127: ArrayReferenceProxy::__construct(Array)
        !           128: ArrayReferenceProxy::offsetSet(Array, name, FooBar)
        !           129: ArrayReferenceProxy::__construct(Array)
        !           130: ArrayReferenceProxy::offsetGet(Array, name)
        !           131: string(6) "FooBar"
        !           132: ArrayReferenceProxy::__construct(Array)
        !           133: ArrayReferenceProxy::offsetSet(Array, name, FooBarBar)
        !           134: ArrayReferenceProxy::__construct(Array)
        !           135: ArrayReferenceProxy::offsetGet(Array, name)
        !           136: string(9) "FooBarBar"
        !           137: ArrayReferenceProxy::__construct(Array)
        !           138: ArrayReferenceProxy::offsetGet(Array, name)
        !           139: ArrayReferenceProxy::offsetSet(Array, name, FooBarBarBaz)
        !           140: ArrayReferenceProxy::__construct(Array)
        !           141: ArrayReferenceProxy::offsetGet(Array, name)
        !           142: string(12) "FooBarBarBaz"
        !           143: ArrayReferenceProxy::__construct(Array)
        !           144: ArrayReferenceProxy::offsetUnset(Array, name)
        !           145: ArrayReferenceProxy::__construct(Array)
        !           146: object(ArrayReferenceProxy)#%d (2) {
        !           147:   ["object":"ArrayReferenceProxy":private]=>
        !           148:   object(Peoples)#%d (1) {
        !           149:     ["person"]=>
        !           150:     array(1) {
        !           151:       [0]=>
        !           152:       &array(0) {
        !           153:       }
        !           154:     }
        !           155:   }
        !           156:   ["element":"ArrayReferenceProxy":private]=>
        !           157:   &array(0) {
        !           158:   }
        !           159: }
        !           160: ArrayReferenceProxy::__construct(Array)
        !           161: ArrayReferenceProxy::offsetGet(Array, name)
        !           162: NULL
        !           163: ArrayReferenceProxy::__construct(Array)
        !           164: ArrayReferenceProxy::offsetSet(Array, name, BlaBla)
        !           165: ArrayReferenceProxy::__construct(Array)
        !           166: ArrayReferenceProxy::offsetGet(Array, name)
        !           167: string(6) "BlaBla"
        !           168: ===DONE===

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