繁体   English   中英

当我升级 Magento 2.4.4 时,我得到了弃用的功能:返回类型的 Composer\Repository\CompositeRepository::count()

[英]When I upgrading Magento 2.4.4 I am getting Deprecated Functionality: Return type of Composer\Repository\CompositeRepository::count()

当我将 Magento 2.4.3 升级到 2.4.4 时,出现 php8.1 deprecated 功能错误。

PHP 致命错误:在 Countable 的 inheritance 期间:未捕获的异常:不推荐使用的功能:Composer\Repository\CompositeRepository::count() 的返回类型应该与 Countable:\ReturnWillChange] 属性或#[应该用于暂时抑制 /var/www/html/vendor/magento/framework/App/ 中第 180 行 /var/www/html/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php 中的通知ErrorHandler.php:61

从 PHP 8.1 开始,您必须修复函数 count() 的返回类型。 我们需要修改2个文件。

将 public function count() 更改为 public function count(): int

转到 => \vendor\composer\composer\src\Composer\Repository\ArrayRepository.php(第 277 行)

public function count(): int
{
    if (null === $this->packages) {
        $this->initialize();
    }

    return count($this->packages);
}

Goto => vendor\composer\composer\src\Composer\Repository\CompositeRepository.php(第 180 行)

public function count(): int
{
    $total = 0;
    foreach ($this->repositories as $repository) {
        /* @var $repository RepositoryInterface */
        $total += $repository->count();
    }

    return $total;
}

最可能的问题是您尚未将所有开发需求从 2.4.4 更新到最新版本。 事实证明,如果它们没有更新,它们会将 composer/composer 模块锁定为 2.0.x。

只需将作曲家更新到版本 2.3.9 - 在此版本中计数方法包含类型

只需在 require 中使用此软件包更新 composer.json

"require": {
    "magento/composer-dependency-version-audit-plugin": "~0.1",
    "magento/composer-root-update-plugin": "^2.0",  
},

另外,使用最新的作曲家是(2.3.10)

我以这种方式解决了(由作曲家2.3.5):

composer2 require magento/composer-root-update-plugin ~2.0 --no-update

composer2 update

Updating dependencies
Lock file operations: 0 installs, 2 updates, 0 removals
  - Upgrading composer/composer (2.1.0 => 2.2.18)
  - Upgrading magento/composer-root-update-plugin (1.1.2 => 2.0.2)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 2 updates, 0 removals
  - Downloading composer/composer (2.2.18)
Gathering patches for root package.
Gathering patches for dependencies. This might take a minute.
  - Upgrading composer/composer (2.1.0 => 2.2.18): Extracting archive
  - Upgrading magento/composer-root-update-plugin (1.1.2 => 2.0.2): Extracting archive

Using the "require-dev" libs taken from Magento 2.4.4 composer.json https://github.com/magento/magento2/blob/2.4.4/composer.json

"require-dev": { "allure-framework/allure-phpunit": "~1.5.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "friendsofphp/php-cs-fixer" :“~3.3.0”,“lusitanian/oauth”:“~0.8.10”,“magento/magento-coding-standard”:“*”,“magento/magento2-functional-testing-framework”:“^3.7 ", "pdepend/pdepend": "~2.10.0", "phpmd/phpmd": "^2.9.1", "phpstan/phpstan": "~1.2.0", "phpunit/phpunit": "~9.5 .0”、“sebastian/phpcpd”:“^6.0.3”、“squizlabs/php_codesniffer”:“~3.6.0”、“symfony/finder”:“^5.2”}

不用担心。 我遇到了类似的问题,并通过更新作曲家 package 来解决。

作曲家需要作曲家/作曲家:~2.2.0 -W

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM