Re: Private properties, Inheritance, Reflection (5.3)
| From: | Roman Borschel | Date: | Sat, 04 Apr 2009 05:34:09 +0000 |
| Subject: | Re: Private properties, Inheritance, Reflection (5.3) | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-43620@lists.php.net to get a copy of this message | ||
Hi,
On Apr 4, 2009, at 1:53 AM, Johannes Schlüter wrote:
On Fri, 2009-04-03 at 22:37 +0200, Roman Borschel wrote:Thanks for your answer. Yes, this works, but here $f is an instance of Foo, not Bar. When you make it an instance of Bar you get NULL. I think this is not correct, is it? Given that we have a ReflectionProperty of class Foo at hand, from my understanding it should look at an instance of Bar as a Foo and return the value. Am I missing something? Regards RomanGiven the following simple classes class Foo {class Foo { private $foo = "value"; } class Bar extends Foo {} $f = new Foo; // we have to know the context, as there might be multiple foo properties $r = new ReflectionProperty("Foo", "foo"); $r->setAccessible(true); var_dump($r->getValue($f)); works for me. johannesprivate $foo = 'value'; public function getFoo() { return $this->foo; }} class Bar extends Foo {} Obviously, given an instance of Bar, say $bar, $bar->getFoo() returns 'value'. Now the question: How do I get at this value using reflection, given an instance of Bar?