Bug #69933 [Com]: Reflection API no longer allows to override static properties
| From: | j dot tvr at centrum dot cz | Date: | Mon, 12 Oct 2015 20:09:38 +0000 |
| Subject: | Bug #69933 [Com]: Reflection API no longer allows to override static properties | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-196565@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=69933&edit=1
ID: 69933
Comment by: j dot tvr at centrum dot cz
Reported by: maf dot michal at gmail dot com
Summary: Reflection API no longer allows to override static
properties
Status: Open
Type: Bug
Package: Reflection related
Operating System: unix
PHP Version: 7.0Git-2015-06-25 (snap)
Block user comment: N
Private report: N
New Comment:
Could someone look into this?
Previous Comments:
------------------------------------------------------------------------
[2015-09-19 20:08:19] j dot tvr at centrum dot cz
I spent some time playing with this bug and it turned out to be worse problem that it originally
seemed. Changing value of static property with reflection **permanently breaks the inheritance
chain**.
https://3v4l.org/T43Sh
------------------------------------------------------------------------
[2015-08-23 15:42:30] j dot tvr at centrum dot cz
https://3v4l.org/nvhZQ
------------------------------------------------------------------------
[2015-06-26 18:47:38] maf dot michal at gmail dot com
proof: https://travis-ci.org/majkel89/php7-bug
------------------------------------------------------------------------
[2015-06-26 18:41:56] maf dot michal at gmail dot com
<?php
class Base {
protected static $prop = 'BASE';
public function getProp() {
return static::$prop;
}
}
class Mock extends Base { }
$obj = new Mock;
$excepted = 'REFLECTED';
$property = new ReflectionProperty('Base', 'prop');
$property->setAccessible(true);
$property->setValue($excepted);
$actual = $obj->getProp();
echo "Schould be
{$excepted} and is {$actual}\n";
// exit($actual !== $excepted ? 1 : 0);
?>
------------------------------------------------------------------------
[2015-06-25 22:08:46] requinix@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
How about a repro that doesn't rely on your test framework?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=69933
--
Edit this bug report at https://bugs.php.net/bug.php?id=69933&edit=1