英语不是我的母语,请耐心等待。从PHP 7.3 开始弃用的功能命名空间断言()不推荐在命名空间内声明名为 assert() 的函数。assert() 函数受到引擎的特殊处理,这可能会导致在定义同名命名空间函数时出现不一致的行为。我正在开发 Drupal 7.72,我正在检查迁移到 PHP 7.3 的过程,当涉及到已弃用的功能时,我发现assert()Drupal 核心在文件夹中的多个文件中使用了该功能\misc\typo3\。我确定的潜在风险如下:docroot\misc\typo3\drupal-security\PharExtensionInterceptor.phpdocroot\misc\typo3\phar-stream-wrapper\src\Interceptor\ConjunctionInterceptor.phpdocroot\misc\typo3\phar-stream-wrapper\src\Interceptor\PharExtensionInterceptor.phpdocroot\misc\typo3\phar-stream-wrapper\src\Interceptor\PharMetaDataInterceptor.phpdocroot\misc\typo3\phar-stream-wrapper\src\PharStreamWrapper.phpdocroot\misc\typo3\phar-stream-wrapper\src\Assertable.phpdocroot\misc\typo3\phar-stream-wrapper\src\Behavior.phpdocroot\misc\typo3\phar-stream-wrapper\src\Manager.php我真的很困惑 Drupal 如何声明断言函数,即使它们已被弃用,也许我误读了文档?有某种方法可以测试这些文件以确保一切都可以在 PHP 7.3 上运行吗?
1 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
这些文件不应导致有关已弃用的命名空间的任何问题assert()。
该弃用指的是命名空间assert()函数,但这些文件中包含的是类方法。
如果我的解释不清楚,这里有一个基本的差异示例:
命名空间断言函数(已弃用)
<?php
namespace Foo;
function assert() {}
这会导致:
已弃用:定义自定义的 assert() 函数已弃用,因为该函数具有特殊语义
类方法(未弃用)
<?php
namespace Foo;
class Something
{
public function assert() {}
}
没问题,因为断言函数包含在一个类中。
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消