Composer.phar之间的区别| 和||

Rom*_*678 7 php semantic-versioning composer-php

composer.json文件中管道和douoble管道有什么区别?例如:

"^1.0.0 || ^2.0.0"
Run Code Online (Sandbox Code Playgroud)

'^1.0.0|^2.0.0'
Run Code Online (Sandbox Code Playgroud)

Pie*_*ves 12

他们是一样的.

如果您查看VersionParser类(https://github.com/composer/semver/blob/1dd67fe56c0587d0d119947061a6bfc9863c101c/src/VersionParser.php#L237),您可以看到以下代码:

$orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints));
Run Code Online (Sandbox Code Playgroud)

正如我们在正则表达式中看到的那样,它们是一个?在第二个管道之后,使其成为可选的.

似乎只记录了双管.(https://getcomposer.org/doc/articles/versions.md#range)

  • 这也在本期[此处](https://github.com/composer/composer/issues/6755)中进行了讨论。他们删除了单个管道的文档,但它仍然保留了向后兼容性的功能。 (2认同)

小智 3

我认为\xc2\xb4s是作曲家OR逻辑运算符的旧语法。\n我找到了这个参考:http://qpleple.com/understand-composer-versions(搜索管道字符)

\n\n

在简介中写道:

\n\n
\n

以下是 Composer 文档中的一些摘录,经过重新组织,可以更好地了解软件包版本和稳定性的工作原理

\n
\n\n

但我在当前的作曲家文档中找不到任何参考,那么我假设这是来自旧版本的文档

\n