编程

PHP 8.4: PHP_ZTS 和 PHP_DEBUG 常量值类型从整型修改为布尔型

255 2024-03-01 00:36:00

PHP_ZTSPHP_DEBUG 是提供当前 PHP 运行时信息的两个全局常量。

  • PHP_ZTS: 说明当前的 PHP 编译是否是线程安全。与 ZEND_THREAD_SAFE 常量是同样的值。
  • PHP_DEBUG: 说明当前的 PHP 编译版本是不是 debug 版本。与 ZEND_DEBUG_BUILD 值相同。

在 PHP 8.4 之前,这两个常量包含整型值:禁用为 0,启用为 1自 PHP 8.4 起,它们改为布尔值。 

向后兼容性影响

更新后的值仍然是“真值”和“假值”,并且不区分类型的比较(如 1==true0==false)即使在发生此更改后也将继续工作。

使用与 PHP_ZTSPHP_DEBUG 常量进行严格比较的应用需要在 PHP 8.4 中进行这种类型的更改。

同时兼容 8.4 和老版本:

- if (PHP_ZTS === 1) {}
+ if (PHP_ZTS === 1 || PHP_ZTS === true) {}

- if (PHP_DEBUG === 1) {}
+ if (PHP_DEBUG === 1 || PHP_DEBUG === true) {}

只适用于 PHP >= 8.4:

- if (PHP_ZTS === 1) {}
+ if (PHP_ZTS) {}

- if (PHP_DEBUG === 1) {}
+ if (PHP_DEBUG) {}

此外,PHP_ZTSPHP_DEBUG 常量也可以使用 ZEND_THREAD_SAFEZEND_DEBUG_BUILD 常量替代。

- if (PHP_ZTS === 1) {}
+ if (ZEND_THREAD_SAFE) {}

- if (PHP_DEBUG === 1) {}
+ if (ZEND_DEBUG_BUILD) {}