【问题标题】:Symfony 5.2.3 interface type-hintingSymfony 5.2.3 接口类型提示
【发布时间】:2021-05-11 23:47:21
【问题描述】:

自从我更新了我的composer.json(我刚刚切换了symfonyconsoledotenvframework-bundleyaml 版本从"5.0.*"5.2.*),我有这个错误:

syntax error, unexpected '|', expecting variable (T_VARIABLE) 来自第 27 行,文件 vendor/psr/link/src/EvolvableLinkInterface.php

(public function withHref(string|\Stringable $href);)

我决定删除我的一个兼性参数类型提示(例如\Stringable)并且效果很好。

我在PHP 7.4.15下运行。

你知道我该如何解决吗?

【问题讨论】:

  • 请分享更多细节 - 与 PHP 7(版本 1.0.0)兼容的最新版 psr/link 不包含这样的类型提示。在 v1.1.0(与 PHP 7 兼容)中,存在此类型提示
  • 谢谢@NicoHaase!你说得对。如果我在InstalledVersions.php 中检查我的psr/link 版本,我可以看到1.1.0 与我的PHP 版本不兼容。那么两个简单的问题:为什么在我的composer.json 更改之前它可以工作?如何修复psr/link 版本(我的composer.json 中没有出现)
  • 这取决于您在composer.json 中需要哪个PHP 版本,以及如何调用它
  • @NicoHaase "php": "^7.4"
  • 你是如何指示 composer 获取新的依赖项的?

标签: php symfony composer-php type-hinting symfony5


【解决方案1】:

看来我们https://github.com/php-fig 的好伙伴使用Union Type Hints 抢先一步,这仅适用于php8。他们没有提供对 php7 的支持。他们出于某种原因从 php5 转到 php8。你可以在 packagegist 中看到这个:

psr/link v1.0.0psr/link v1.1.0

还有:

psr/log v1.1.4psr/log v2.0.0

这也会在依赖 psr/log 并运行 php7 的 Laravel 7 中引起问题。

您需要指定较旧的软件包版本:

composer require psr/link "1.0.*"

composer require psr/log "^1.0"

【讨论】:

  • 这实际上是我所做的,我指定了一个旧版本。感谢您提供详细信息。
猜你喜欢
  • 1970-01-01
  • 2016-06-10
  • 2014-09-10
  • 1970-01-01
  • 2018-08-23
  • 2021-11-17
  • 2018-07-27
  • 2016-01-19
  • 2011-07-06
相关资源
最近更新 更多