为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 7.3 已弃用 Drupal 中的命名空间断言

PHP 7.3 已弃用 Drupal 中的命名空间断言

PHP
叮当猫咪 2023-09-08 17:10:18
英语不是我的母语,请耐心等待。从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() {}

}

没问题,因为断言函数包含在一个类中。


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信