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

时间:2017-02-01 12:41:32

标签: php composer-php semantic-versioning

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

"^1.0.0 || ^2.0.0"

'^1.0.0|^2.0.0'

3 个答案:

答案 0 :(得分:10)

他们是一样的。

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

$orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints));

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

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

答案 1 :(得分:1)

区别在于| (单个管道)按位或和|| (双管道)逻辑或 ||是逻辑OR运算符。听起来你基本上知道那是什么。它在条件语句中使用,例如if,while等。

condition1 || condition2

" || "将从头开始按顺序检查。如果发现顺序中的任何条件为真,那么||停止进一步检查。所以||在条件语句中更有效率

|是按位OR运算符。它曾经用于操作两个数字。您可以单独查看每个数字的每个位,如果其中一个位在至少一个数字中为1,那么结果位也将为1。以下是一些例子:

A = 01010101
B = 10101010
A | B = 11111111

A = 00000001
B = 00010000
A | B = 00010001

答案 2 :(得分:1)

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

在介绍中说:

  

以下是重组的Composer文档的一些摘录   更好地了解包版本和稳定性如何工作

但我在当前的作曲家文档中找不到任何引用,然后我假设这是来自旧版本的文档