Browse Source
- MFH: Fixed bug #46064 (Exception when creating ReflectionProperty object on dynamicly created property)
PHP-5.2.1RC1
- MFH: Fixed bug #46064 (Exception when creating ReflectionProperty object on dynamicly created property)
PHP-5.2.1RC1
3 changed files with 199 additions and 14 deletions
-
67ext/reflection/php_reflection.c
-
74ext/reflection/tests/bug46064.phpt
-
72ext/reflection/tests/bug46064_2.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) |
|||
@ -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" |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue