diff options
| author | Zoe Slattery <zoe@php.net> | 2008-10-17 14:26:46 +0000 |
|---|---|---|
| committer | Zoe Slattery <zoe@php.net> | 2008-10-17 14:26:46 +0000 |
| commit | 867546efcae56eda53c02b112f8577d6bf20607c (patch) | |
| tree | b1a63df9fba0262c841e6df88db252be652bb4e3 /ext/spl/tests/arrayObject_magicMethods5.phpt | |
| parent | 739c75b05077a08176a12b77db1d72aa17b2971d (diff) | |
| download | php-git-867546efcae56eda53c02b112f8577d6bf20607c.tar.gz | |
Committing for Robin Fernandes
Diffstat (limited to 'ext/spl/tests/arrayObject_magicMethods5.phpt')
| -rw-r--r-- | ext/spl/tests/arrayObject_magicMethods5.phpt | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/ext/spl/tests/arrayObject_magicMethods5.phpt b/ext/spl/tests/arrayObject_magicMethods5.phpt new file mode 100644 index 0000000000..587c99d8cf --- /dev/null +++ b/ext/spl/tests/arrayObject_magicMethods5.phpt @@ -0,0 +1,187 @@ +--TEST-- +SPL: ArrayObject: ensure the magic methods for property access of a subclass of ArrayObject ARE invoked when manipulating its elements using ->. +--FILE-- +<?php +class C { + public $a = 1; + public $b = 2; + public $c = 3; + + private $priv = 'secret'; +} + +class UsesMagic extends ArrayObject { + + public $b = "This should never show up"; + + function __get($name) { + $args = func_get_args(); + echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n"; + } + function __set($name, $value) { + $args = func_get_args(); + echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n"; + } + function __isset($name) { + $args = func_get_args(); + echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n"; + } + function __unset($name) { + $args = func_get_args(); + echo "In " . __METHOD__ . "(" . implode($args, ',') . ")\n"; + } + +} +$obj = new C; +$ao = new UsesMagic($obj); +echo "\n--> Write existent, non-existent and dynamic:\n"; +$ao->a = 'changed'; +$ao->dynamic = 'new'; +$ao->dynamic = 'new.changed'; +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Read existent, non-existent and dynamic:\n"; +var_dump($ao->a); +var_dump($ao->nonexistent); +var_dump($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> isset existent, non-existent and dynamic:\n"; +var_dump(isset($ao->a)); +var_dump(isset($ao->nonexistent)); +var_dump(isset($ao->dynamic)); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); + +echo "\n--> Unset existent, non-existent and dynamic:\n"; +unset($ao->a); +unset($ao->nonexistent); +unset($ao->dynamic); +echo " Original wrapped object:\n"; +var_dump($obj); +echo " Wrapping ArrayObject:\n"; +var_dump($ao); +?> +--EXPECTF-- + +--> Write existent, non-existent and dynamic: +In UsesMagic::__set(a,changed) +In UsesMagic::__set(dynamic,new) +In UsesMagic::__set(dynamic,new.changed) + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> Read existent, non-existent and dynamic: +In UsesMagic::__get(a) +NULL +In UsesMagic::__get(nonexistent) +NULL +In UsesMagic::__get(dynamic) +NULL + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> isset existent, non-existent and dynamic: +In UsesMagic::__isset(a) +bool(false) +In UsesMagic::__isset(nonexistent) +bool(false) +In UsesMagic::__isset(dynamic) +bool(false) + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + +--> Unset existent, non-existent and dynamic: +In UsesMagic::__unset(a) +In UsesMagic::__unset(nonexistent) +In UsesMagic::__unset(dynamic) + Original wrapped object: +object(C)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +} + Wrapping ArrayObject: +object(UsesMagic)#%d (4) { + ["a"]=> + int(1) + ["b"]=> + int(2) + ["c"]=> + int(3) + ["priv:private"]=> + string(6) "secret" +}
\ No newline at end of file |
