Bug #73657 [Ver->Csd]: Reflection property can't access to ArrayObject property

From: Date: Fri, 28 Feb 2020 15:15:02 +0000
Subject: Bug #73657 [Ver->Csd]: Reflection property can't access to ArrayObject property
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-225792@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73657&edit=1 ID: 73657 Updated by: nikic@php.net Reported by: ilya at antipenko dot pp dot ua Summary: Reflection property can't access to ArrayObject property -Status: Verified +Status: Closed Type: Bug Package: Reflection related Operating System: Any PHP Version: 7.0.13 -Assigned To: +Assigned To: nikic Block user comment: N Private report: N New Comment: This has been fixed in PHP 7.4: ArrayObject no longer reports the array contents as properties to reflection. Previous Comments: ------------------------------------------------------------------------ [2016-12-05 19:21:30] cmb@php.net Indeed, the notice is caused by commit a1ed4ab3[1]. However, the behavior didn't make sense before that commit, because the property's value was returned as NULL[2]. It seems to me that ::getProperties() should return 0 (as done by HHVM). [1] <http://git.php.net/?p=php-src.git;a=commit;h=a1ed4ab3> [2] <https://3v4l.org/UcTHf> ------------------------------------------------------------------------ [2016-12-05 17:02:24] ilya at antipenko dot pp dot ua Seems caused by https://bugs.php.net/bug.php?id=72174 ------------------------------------------------------------------------ [2016-12-05 17:00:11] ilya at antipenko dot pp dot ua Description: ------------ Hello. ReflectionObject::getProperties() returns property which added to ArrayObject with offsetSet(), but this property can't be gotten by ReflectionProperty::getValue(). See https://3v4l.org/Y2CkO Test script: --------------- <?php class A extends \ArrayObject {} $a = new A; $a->offsetSet('test', 'testValue'); $reflection = new \ReflectionObject($a); $properties = $reflection->getProperties(); $c = count($properties); echo $c . PHP_EOL; if ($c) { echo $properties[0]->getValue($a) . PHP_EOL; } Expected result: ---------------- I'm not sure what is expected behaviour, but it's strange to have abiliti get property of ArrayObject and have not ability to get value of this property. Variants: 1. Properties have not be returned by ReflectionObject::getProperties() ------ EXPECTED ----- 1 testValue ------ EXPECTED ----- 2. Property values should be accessible by ReflectionProperty::getValue() ------ EXPECTED ----- 0 ------ EXPECTED ----- Actual result: -------------- 1 Notice: Undefined property: A::$test in /in/FbMbQ on line 14 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=73657&edit=1

« previous php.bugs (#225792) next »