Doctrine 2.5.11引入了PHP 7.0的问题

时间:2017-10-03 20:32:51

标签: php doctrine-orm orm php-7 php-7.1

今天正在更新服务器安装并破坏了我的整个设置。注意到doctrine / orm~2.5.6加载2.5.11需要

  • 安装doctrine / collections(v1.5.0)
  • 安装doctrine / annotations(v1.5.0)
  • 安装doctrine / common(v2.8.1)
  • 安装doctrine / instantiator(1.1.0)
  • 安装doctrine / orm(v2.5.11)

doctrine / collections和所有其他包需要PHP 7.1。这就是为什么我的应用程序不再起作用了。升级到7.1现在不是一个选项,所以我们将依赖项修复为:

,“doctrine / orm”:“2.5.10” ,“教义/注释”:“~1.4.0” ,“教义/收藏”:“~1.4.0” ,“教义/共同”:“~2.7.0”

现在我的问题: doctrine / orm 2.5.11的版本号是不是错了?不应该是2.6,因为它需要在7.0中不起作用的依赖,它会破坏安装吗?

问题出现了(因为在Mac上)php版本与apache版本不同。这就是为什么我认为版本编号中的语义应该改进或者doctrine / orm包中的要求需要减少松散。

我很想知道如何在我身边做得更好。

只是谷歌会添加异常消息:Doctrine \ Common \ Annotations \ AnnotationRegistry :: registerFile()的返回值必须是Doctrine \ Common \ Annotations \ void的实例,无返回

1 个答案:

答案 0 :(得分:0)

甲。关于版本的问题

1。来自doctrine/orm 2.5.11的版本号是否错误

2。不应该是2.6,因为它需要在7.0中不起作用的依赖项,它会破坏安装吗?

1。 major.minor.patch

一句话就是semantic versioning

  • 如果您对某些内容进行了修改,或者只想标记可通过编辑器下载的新版本 - patch ++
  • 如果您添加新功能 - minor ++
  • 如果您删除了一些旧功能,那将无法正常工作 - major ++

Bumping任何软件包版本是第一种情况,因为作曲家不会允许安装会破坏任何软件包的软件包。

2。 composer update负责此

当您的代码在composer update之后运行时(当您使用^2.5等常见版本锁时),则不需要 major ++ 版本。

如果你有PHP 7.0,并且你运行composer udpate,那么一切都会有效。

Composer无法下载doctrine/orm 2.5.11,因为它不符合您当地的条件。

如果您将来的任何时候将系统更新为PHP 7.1 并运行composer update,则编译器将升级到doctrine/orm 2.5.11(或更高版本),您的代码将正常工作

您还可以在official post in Doctrine's documentation中找到类似的解释。

B中。如何使用本地和服务器上的varions版本来解决这个问题?

您可以使用platform选项在composer.json中强制执行优先版本。

"config": {
    "platform": {
        "php": "7.0"
    }
}

这将更喜欢本地系统和服务器上的PHP 7.0软件包。