В чем разница между pipe и douoble pipe в файле composer.json? Например:
"^1.0.0 || ^2.0.0"
а также
'^1.0.0|^2.0.0'
Они одинаковые.
Если вы посмотрите на класс 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)
Разница в том, что | (одна труба) поразрядно или и || (двойная труба) логический или
|| логический оператор ИЛИ Похоже, вы в основном знаете, что это такое. Используется в условных выражениях, таких как if, while и т. Д.
condition1 || condition2
«||» проверит последовательность, начиная с первого. Если какое-либо условие в последовательности окажется истинным, то || прекращает дальнейшую проверку .so || более эффективен в условных выражениях
| является побитовым оператором ИЛИ. Он используется для работы на двух номерах. Вы смотрите на каждый бит каждого числа в отдельности и, если один из битов равен 1 хотя бы в одном из чисел, то результирующий бит также будет равен 1. Вот несколько примеров:
A = 01010101
B = 10101010
A | B = 11111111
A = 00000001
B = 00010000
A | B = 00010001
Я думаю, что это старый синтаксис логического оператора ИЛИ композитора.
Я нашел эту ссылку: http://qpleple.com/understand-composer-versions (поиск символа трубы)
Во введении говорится:
Вот некоторые выдержки из документации Composer, реорганизованной в
лучше понять, как работают версии пакетов и стабильность
но я не смог найти никаких ссылок в текущей документации композитора, тогда я предполагаю, что это из старой версии документации