|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2006-06-15 11:05 UTC] pierrealain dot bourdil at free dot fr
Description:
------------
First , i hope to really submit a bug, at least i've done my best to check it.
i've made a class that contains other class, with dynamic adding,removing possibilities, save,restaure from session, and which use __call,__get,__set method.
Within __get method, i instanciate ReflectionProperty.
When i access a protected property, using ReflectionProperty->getValue, i expect to catch an exception, but i don't.
I can access this property. It works perfectly with ReflectionMethod, but no with ReflectionProperty.
Reproduce code:
---------------
$rp=new ReflectionProperty($myClass,value);
try{
if ($rp->isStatic())
return $rp->getValue(null);
else
return $rp->getValue(self::$instance->aClasses[$myClass]);
}catch( Exception $e){
echo $e->getMessage();
return null;
}
now a portion the class which contains property that i tri to access
protected $pp;
public function __construct(){
$this->pp="pp";
}
Expected result:
----------------
this is what i expect, but for method,
Trying to invoke protected method test::testFunction from scope ReflectionMethod
i think i would expect something like that
Trying to access protected property test::pp from scope Reflectionproperty
Actual result:
--------------
__get : pp
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 13:00:01 2025 UTC |
No need for huge reproduce scripts, you need only this: <?php class test{ private $pp = 1; } $t = new test; $rp = new ReflectionProperty("test", "pp"); var_dump($rp->getValue($t)); ?> Marcus, you changed this: http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.185&r2=1.186There is some disabled code here which would fix the issue without the need to bailout. marcus@zaphod /usr/src/php-cvs $ php -r 'class T{protected $p=2;} $o=new T; $r=new ReflectionProperty($o,"p"); var_dump($r->getValue($o));' make: `sapi/cli/php' is up to date. Fatal error: Cannot use array returned from ReflectionException::__get('trace') in write context in Unknown on line 0