迁移到 PHP 8.0:array_key_exists() 改进的性能...不理解

Migrate to PHP 8.0: array_key_exists() improved performance... not understood

一步一步,我正在将我的项目从 PHP 7.1 迁移到 PHP 8.0.

在官方 PHP 手册中,在第 章的 “其他更改” 子章中“从 PHP 7 迁移。 3.x 到 PHP 7.4.x", 我试着去理解 the following paragraph:

A specialized VM opcode for the array_key_exists() function has been added, which improves performance of this function if it can be statically resolved. In namespaced code, this may require writing \array_key_exists() or explicitly importing the function.

虽然,这部分我不是很理解:

也许你能帮帮我?

非常感谢您的宝贵时间!

我相信这里的“解决方案”是关于明确地将名称引用到内置函数。示例:

namespace foo;

array_key_exists('bar', $baz);

function array_key_exists() {}

在此代码中,函数调用将引用自定义定义的 foo\array_key_exists,并且根据名称解析规则解析只能在运行时发生。该函数也可能在其他时间包含在其他文件中的其他文件中定义,但仍会定义该函数foo\array_key_exists,因此不能过早解决。

但是,如果源代码中的 array_key_exists(...) 调用明确指代 PHP 的内置 array_key_exists,则 parser/compiler 会将其替换为更快的操作码。为此,代码必须没有命名空间,或者明确使用 \array_key_exists.