diff options
author | Felipe Pena <felipe@php.net> | 2008-10-29 12:56:29 +0000 |
---|---|---|
committer | Felipe Pena <felipe@php.net> | 2008-10-29 12:56:29 +0000 |
commit | b9c03aa4a58820ac0c917ae247553d58e90672d9 (patch) | |
tree | 00978f8837135a0b1e2958e241b4d8cc229b5930 /ext/reflection/tests | |
parent | 101e472c66c7675c11ffceb8f007f0d5a00c4ab2 (diff) | |
download | php-git-b9c03aa4a58820ac0c917ae247553d58e90672d9.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 | 81 | ||||
-rw-r--r-- | ext/reflection/tests/bug46064_2.phpt | 72 |
2 files changed, 153 insertions, 0 deletions
diff --git a/ext/reflection/tests/bug46064.phpt b/ext/reflection/tests/bug46064.phpt new file mode 100644 index 0000000000..89c5af37d5 --- /dev/null +++ b/ext/reflection/tests/bug46064.phpt @@ -0,0 +1,81 @@ +--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, 'a'); + $p->setAccessible(true); + var_dump($p->getValue($this), $p->isDefault(), $p->isPublic()); + + $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(200) +bool(true) +bool(false) +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" + } +} |