PHP:如何在检查常量是否存在的同时避免define()?

时间:2019-07-08 11:45:41

标签: php performance

许多经验丰富的开发人员都知道,功能defined()的速度比其他检查慢19倍。

我遇到了一个问题,我需要循环处理5000多个记录,并按顺序进行7次defined()检查,并放慢整个项目的进度。

在这种情况下,无法更改项目工作方式或分块方式。是否有一些好的解决方案或想法如何避免使用defined()函数?

2 个答案:

答案 0 :(得分:0)

您尝试使用

constant ( string $name ) : mixed
  

返回常量的值,如果常量不是,则返回NULL   定义。

鉴于在php中null == false

if (defined($name))

if (constant($name))

几乎相同
https://www.php.net/manual/en/function.constant.php

答案 1 :(得分:0)

我测试类似:

if(!defined('TEST')) continue;

if(!@TEST) continue;

if(NULL === @constant('TEST')) continue;

我对PHP 7.1的测量是if(!@TEST) continue;if(NULL === @constant('TEST')) continue;快,但两者都比if(!defined('TEST')) continue;

似乎我们还没有更快的解决方案,define()仍然是检查常量的更快方法。