Обидва дозволяють оновлення, які за семантичним версіонуванням не мають ламати сумісність:
^1.2.3- від 1.2.3 до (не включно) 2.0.0. Дозволені всі мінорні й патч-оновлення.~1.2.3- від 1.2.3 до (не включно) 1.3.0. Дозволені лише патчі.~1.2- від 1.2 до 2.0. Остання вказана цифра може рости.
Нюанс з нулем: для версій 0.x мінорна версія вважається ламкою. ^0.3.1 - це від 0.3.1 до 0.4.0, а не до 1.0.
Що обирати:
^- стандарт для більшості залежностей. Саме його пишеcomposer require.- Точна версія (
1.2.3) - лише коли пакет відомий тим, що ламає сумісність у мінорних версіях, і оновлювати його хочеться тільки вручну. *чиdev-masterу застосунку - ні: сьогоднішнійcomposer updateможе принести будь-що.
Важливо: обмеження в composer.json визначають, що дозволено. Що встановлено - записано в composer.lock, і на сервер їде саме воно.