Bug or expected behavior?

php.internals

Marc Bennewitz

10 years ago
Hi, today I was running into an issue with a function lookup over namespace. https://3v4l.org/qF7cK fails https://3v4l.org/evVic works For me it looks like the function lookup for "is_null" in this case gets cached on first use and on second call no check will be done if this function exists in the current namespace before looking in the root namespace. Because PHP is a dynamic language this behavior looks wrong (unexpected) to me and also HHVM does handle it as I would expect it. Thanks, Marc

Nikita Popov

10 years ago
On Tue, May 31, 2016 at 9:54 PM, Marc Bennewitz <dev@mabe.berlin> wrote:
> Hi, > > today I was running into an issue with a function lookup over namespace. > > https://3v4l.org/qF7cK fails > https://3v4l.org/evVic works > > For me it looks like the function lookup for "is_null" in this case gets > cached on first use > and on second call no check will be done if this function exists in the > current namespace > before looking in the root namespace. > > Because PHP is a dynamic language this behavior looks wrong (unexpected) > to me > and also HHVM does handle it as I would expect it. > > Thanks, > Marc >
This is a known issue: https://bugs.php.net/bug.php?id=64346 Regards, Nikita

Marc Bennewitz

10 years ago
On 05/31/2016 09:59 PM, Nikita Popov wrote:
> On Tue, May 31, 2016 at 9:54 PM, Marc Bennewitz <dev@mabe.berlin > <mailto:dev@mabe.berlin>> wrote: > > Hi, > > today I was running into an issue with a function lookup over > namespace. > > https://3v4l.org/qF7cK fails > https://3v4l.org/evVic works > > For me it looks like the function lookup for "is_null" in this > case gets cached on first use > and on second call no check will be done if this function exists > in the current namespace > before looking in the root namespace. > > Because PHP is a dynamic language this behavior looks wrong > (unexpected) to me > and also HHVM does handle it as I would expect it. > > Thanks, > Marc > > > This is a known issue: https://bugs.php.net/bug.php?id=64346
Much thanks Nikita for the link. Didn't found it myself. But this bug ticket doesn't look nice - No comments since 2¹/² years. Is a suggestion from someone without enough knowledge of the engine / opcache. Wouldn't it be better to move this performance feature into opcache and make it configurable over "opcache.optimization_level <http://php.net/manual/en/opcache.configuration.php#ini.opcache.optimization-level>"?
> > Regards, > Nikita
Thanks, Marc