[英]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.x章节的“其他更改”子章节中,尝试理解以下段落7。
为array_key_exists() function 添加了一个专门的 VM 操作码,如果可以静态解析,它会提高此 function 的性能。 在命名空间代码中,这可能需要编写 \array_key_exists() 或显式导入 function。
虽然,它的这些部分我真的不能理解:
也许你能帮助我?
非常感谢您的宝贵时间!
我相信这里的“分辨率”是关于明确地将名称指向内置 function。 例子:
namespace foo;
array_key_exists('bar', $baz);
function array_key_exists() {}
在此代码中, function 调用将引用自定义定义的foo\array_key_exists
,并且只能在运行时根据名称解析规则进行解析。 function 也可以在其他时间包含在其他文件中的某个其他文件中定义,但仍会定义 function foo\array_key_exists
,因此无法过早解决。
但是,如果源代码中的array_key_exists(...)
调用明确引用 PHP 的内置array_key_exists
,则解析器/编译器将用更快的操作码替换它。 为此,代码必须不是命名空间,或者明确使用\array_key_exists
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.