Von: Christian Stoller [mailto:stol...@leonex.de], Gesendet: Montag, 19. 
September 2016 10:27
Betreff: [PHP-DEV] Problem with overwriting private property value with 
ReflectionProperty

> Hi,
>
> I have spent several hours with a strange problem with reflection.
>
> There's an object of an external lib with a private field and I
> have to overwrite its values. Because there is no public method
> I am using ReflectionProperty like this:
>
> $reflProp = new \ReflectionProperty(Extension::class, 'classes');
> $reflProp->setAccessible(true);
> $reflProp->setValue($extension,['new', 'values']);
>
> var_export($extension->getClasses());
>
> The field is of type array and contains several entries. The problem
> is, that the private field has not been overwritten by
> `$reflProp->setValue()`. Instead it looked like, the array of the
> private field has been merged with my new array.
>
> I tried different things but nothing worked. I have tried to create
> a small script which could show the problem, but it wasn't reproducible.
>
> The last thing I tried was, to call
>
> var_export($reflProp->getValue($extension));
>
> instead of
>
> var_export($extension->getClasses());
>
> That returns exactly the correct value. So my question is if somebody
> could imagine why `$reflProp->getValue()` returns the value I am trying
> to set, but accessing the field with an object member method
> (getClasses) returns a merged array.
>
> I am using PHP 5.6.26 (x86, TS) on Windows 10.
>
> Best regards,
> Christian

Oh, sorry. I have found the problem now, after trying to overwrite the value 
with a string instead of an array. The object I had the problem with, has been 
extended by another class the the `getClasses` merged the field with another 
array.

Sorry for the noise.

Christian

Mit freundlichen Gr??en aus Paderborn

Christian Stoller
Softwareentwicklung

LEONEX Internet GmbH
Technologiepark 20
33100 Paderborn
Tel: 05251-14807-27
Fax: 05251-14807-30
HRB 8694 AG Paderborn
Gesch?ftsf?hrer: Stephan Winter

________________________________
Erfolgreiche E-Business L?sungen von LEONEX
Erfahren Sie mehr unter www.leonex.de
________________________________

Reply via email to