php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #73657 Reflection property can't access to ArrayObject property
Submitted: 2016-12-05 17:00 UTC Modified: 2016-12-05 19:21 UTC
From: ilya at antipenko dot pp dot ua Assigned:
Status: Verified Package: Reflection related
PHP Version: 7.0.13 OS: Any
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2016-12-05 17:00 UTC] 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


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-12-05 17:02 UTC] ilya at antipenko dot pp dot ua
Seems caused by https://bugs.php.net/bug.php?id=72174
 [2016-12-05 19:21 UTC] cmb@php.net
-Status: Open +Status: Verified
 [2016-12-05 19:21 UTC] 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>
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Fri Aug 23 04:01:26 2019 UTC