Bug #74576 [Opn]: opcache do not update class constant after uopz_redefine
| From: | kejinjin at gmail dot com | Date: | Fri, 12 May 2017 06:08:03 +0000 |
| Subject: | Bug #74576 [Opn]: opcache do not update class constant after uopz_redefine | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-209080@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74576&edit=1
ID: 74576
User updated by: kejinjin at gmail dot com
Reported by: kejinjin at gmail dot com
Summary: opcache do not update class constant after
uopz_redefine
Status: Open
Type: Bug
Package: opcache
Operating System: CentOS7x64
-PHP Version: 7.1.5
+PHP Version: 7.1.4
Block user comment: N
Private report: N
New Comment:
PS: PHP version is 7.1.4
Previous Comments:
------------------------------------------------------------------------
[2017-05-12 05:47:25] kejinjin at gmail dot com
Description:
------------
I use uopz_redefine to redefine class constants
(uopz called zend_declare_class_constant)
when opcache is enabled, I cannot get the new class constant through Foo::BAR.
Test script:
---------------
<?php
class Foo
{
const BAR = '123';
}
var_dump(Foo::BAR);// A1: try to comment this
(function () {
var_dump(Foo::BAR); // B1: try to comment this
uopz_redefine('Foo', 'BAR', '456');
var_dump(Foo::BAR); // B2: compare
})();
(function () {
var_dump(Foo::BAR); // new scope
})();
var_dump((new ReflectionClass('Foo'))->getConstant('BAR')); // also OK
var_dump(Foo::BAR); // A2: compare
Expected result:
----------------
'123'
'123'
'456'
'456'
'456'
'456'
Actual result:
--------------
'123'
'123'
'123' (it is '456' if line B1 is commented)
'456'
'456'
'123' (it is '456' if line A1 is commented)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74576&edit=1