diff options
| author | Felipe Pena <felipe@php.net> | 2008-10-29 13:34:08 +0000 |
|---|---|---|
| committer | Felipe Pena <felipe@php.net> | 2008-10-29 13:34:08 +0000 |
| commit | a04ec69406aed8d695dc8fb1edac38d7bc8a30c7 (patch) | |
| tree | 51e6b4f5412f559648d27d976381a64e5e07f81d /ext/reflection/tests | |
| parent | 3b7b54ac68bc3c890cf472c9c0bca1d61f0ecce7 (diff) | |
| download | php-git-a04ec69406aed8d695dc8fb1edac38d7bc8a30c7.tar.gz | |
- MFH: Fixed bug #46064 (Exception when creating ReflectionProperty object on dynamicly created property)
Diffstat (limited to 'ext/reflection/tests')
| -rw-r--r-- | ext/reflection/tests/bug46064.phpt | 74 | ||||
| -rw-r--r-- | ext/reflection/tests/bug46064_2.phpt | 72 |
2 files changed, 146 insertions, 0 deletions
diff --git a/ext/reflection/tests/bug46064.phpt b/ext/reflection/tests/bug46064.phpt new file mode 100644 index 0000000000..58b732f315 --- /dev/null +++ b/ext/reflection/tests/bug46064.phpt @@ -0,0 +1,74 @@ +--TEST-- +Bug #46064 (Exception when creating ReflectionProperty object on dynamicly created property) +--FILE-- +<?php + +class x { + public $zzz = 2; +} + +$o = new x; +$o->z = 1000; +$o->zzz = 3; + +var_dump($h = new reflectionproperty($o, 'z')); +var_dump($h->isDefault()); +var_dump($h->isPublic()); +var_dump($h->isStatic()); +var_dump($h->getName()); +var_dump(Reflection::getModifierNames($h->getModifiers())); +var_dump($h->getValue($o)); + +print "---------------------------\n"; +try { + var_dump(new reflectionproperty($o, 'zz')); +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +var_dump(new reflectionproperty($o, 'zzz')); + +class test { + protected $a = 1; +} + +class bar extends test { + public function __construct() { + $this->foobar = 2; + $this->a = 200; + + $p = new reflectionproperty($this, 'foobar'); + var_dump($p->getValue($this), $p->isDefault(), $p->isPublic()); + } +} + +new bar; + +?> +--EXPECTF-- +object(ReflectionProperty)#2 (2) { + ["name"]=> + string(1) "z" + ["class"]=> + string(1) "x" +} +bool(false) +bool(true) +bool(false) +string(1) "z" +array(1) { + [0]=> + string(6) "public" +} +int(1000) +--------------------------- +string(30) "Property x::$zz does not exist" +object(ReflectionProperty)#3 (2) { + ["name"]=> + string(3) "zzz" + ["class"]=> + string(1) "x" +} +int(2) +bool(false) +bool(true) diff --git a/ext/reflection/tests/bug46064_2.phpt b/ext/reflection/tests/bug46064_2.phpt new file mode 100644 index 0000000000..832d13c414 --- /dev/null +++ b/ext/reflection/tests/bug46064_2.phpt @@ -0,0 +1,72 @@ +--TEST-- +Bug #46064.2 (Exception when creating ReflectionProperty object on dynamicly created property) +--FILE-- +<?php + +class foo { +} + +$x = new foo; +$x->test = 2000; + + +$p = new ReflectionObject($x); +var_dump($p->getProperty('test')); + + +class bar { + public function __construct() { + $this->a = 1; + } +} + +class test extends bar { + private $b = 2; + + public function __construct() { + parent::__construct(); + + $p = new reflectionobject($this); + var_dump($h = $p->getProperty('a')); + var_dump($h->isDefault(), $h->isProtected(), $h->isPrivate(), $h->isPublic(), $h->isStatic()); + var_dump($p->getProperties()); + } +} + +new test; + +?> +--EXPECT-- +object(ReflectionProperty)#3 (2) { + ["name"]=> + string(4) "test" + ["class"]=> + string(3) "foo" +} +object(ReflectionProperty)#5 (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(4) "test" +} +bool(false) +bool(false) +bool(false) +bool(true) +bool(false) +array(2) { + [0]=> + &object(ReflectionProperty)#6 (2) { + ["name"]=> + string(1) "b" + ["class"]=> + string(4) "test" + } + [1]=> + &object(ReflectionProperty)#7 (2) { + ["name"]=> + string(1) "a" + ["class"]=> + string(4) "test" + } +} |
