猿问

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

英语不是我的母语,请耐心等待。

PHP 7.3 开始弃用的功能

命名空间断言()

不推荐在命名空间内声明名为 assert() 的函数。assert() 函数受到引擎的特殊处理,这可能会导致在定义同名命名空间函数时出现不一致的行为。

我正在开发 Drupal 7.72,我正在检查迁移到 PHP 7.3 的过程,当涉及到已弃用的功能时,我发现assert()Drupal 核心在文件夹中的多个文件中使用了该功能\misc\typo3\我确定的潜在风险如下:

  • docroot\misc\typo3\drupal-security\PharExtensionInterceptor.php

  • docroot\misc\typo3\phar-stream-wrapper\src\Interceptor\ConjunctionInterceptor.php

  • docroot\misc\typo3\phar-stream-wrapper\src\Interceptor\PharExtensionInterceptor.php

  • docroot\misc\typo3\phar-stream-wrapper\src\Interceptor\PharMetaDataInterceptor.php

  • docroot\misc\typo3\phar-stream-wrapper\src\PharStreamWrapper.php

  • docroot\misc\typo3\phar-stream-wrapper\src\Assertable.php

  • docroot\misc\typo3\phar-stream-wrapper\src\Behavior.php

  • docroot\misc\typo3\phar-stream-wrapper\src\Manager.php

我真的很困惑 Drupal 如何声明断言函数,即使它们已被弃用,也许我误读了文档?有某种方法可以测试这些文件以确保一切都可以在 PHP 7.3 上运行吗?


叮当猫咪
浏览 97回答 1
1回答

ibeautiful

这些文件不应导致有关已弃用的命名空间的任何问题assert()。该弃用指的是命名空间assert()函数,但这些文件中包含的是类方法。如果我的解释不清楚,这里有一个基本的差异示例:命名空间断言函数(已弃用)<?phpnamespace Foo;function assert() {}这会导致:已弃用:定义自定义的 assert() 函数已弃用,因为该函数具有特殊语义类方法(未弃用)<?phpnamespace Foo;class Something{&nbsp;&nbsp; &nbsp; public function assert() {}}没问题,因为断言函数包含在一个类中。
随时随地看视频慕课网APP
我要回答