Bug #74576 [Opn->Fbk]: opcache do not update class constant after uopz_redefine
| From: | cmb@php.net | Date: | Tue, 03 Oct 2017 16:43:57 +0000 |
| Subject: | Bug #74576 [Opn->Fbk]: opcache do not update class constant after uopz_redefine | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-211500@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
Updated by: cmb@php.net
Reported by: kejinjin at gmail dot com
Summary: opcache do not update class constant after
uopz_redefine
-Status: Open
+Status: Feedback
Type: Bug
Package: opcache
Operating System: CentOS7x64
PHP Version: 7.1.4
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Are you loading uopz *before* OPcache?
Previous Comments:
------------------------------------------------------------------------
[2017-05-12 06:08:02] kejinjin at gmail dot com
PS: PHP version is 7.1.4
------------------------------------------------------------------------
[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