Será que você já sabe tudo sobre a especificação de versões no arquivo composer.json?
Você saberia dizer quais os pacotes seriam instalados baseado nesta lista?
{ "laminas/laminas-db": "^2.8.0", "laminas/laminas-log": "~2.9.0", "laminas/laminas-mvc-form": "1.0.0", "laminas/laminas-validator": "2.1.*", "laminas/laminas-mvc-i18n": ">=1.1.0", "laminas/laminas-mvc": ">=1.0.0 <2.0.0" }
Mas e o que significa cada um destes itens? Você saberia dizer?
Versão Específica
"laminas/laminas-mvc-form": "1.0.0"
Ao escrever 1.0 você estará automaticamente fixando esta versão do pacote ao seu conjunto de bibliotecas não permitindo nenhum tipo de alteração.
Range de Versão
"laminas/laminas-mvc-i18n": ">=1.1.0" "laminas/laminas-mvc": ">=1.0.0 <2.0.0"
Definindo o alcance através dos números das versões você terá possibilidade de especificar como no primeiro caso que aceita versões maiores ou iguais 1.1.
Como no primeiro caso não foi especificado um limite, sempre será atualizado inclusive por versões que podem quebrar seu código, como eventualmente seria o caso de 2.0 pois geralmente versões novas são passíveis de alteração de código, exclusão de código e assim por diante.
Por isso, o range funciona melhor como no segundo exemplo onde você especifica que aceita qualquer versão igual ou superior a 1.0 desde que inferior a 2.0, ou seja, qualquer versão dentro de 1.[alguma coisa] será aceito.
Wildcard
"laminas/laminas-validator": "2.1.*"
Você também pode usar o símbolo * (asterisco) para informar wildcard e com isso dizer que qualquer versão que atende aos critérios 2.1.[alguma coisa] serão aceitos.
Este caso geralmente é usado para garantir atualizações de segurança ou fixes em versão já definidas, como no exemplo acima, garantiria que qualquer atualização na versão 2.1.0 seria passível de atualização mas a versão 2.2.0 não seria aceita.
Operadores de Próxima Versão
"laminas/laminas-log": "~2.9.0" "laminas/laminas-db": "^2.8.0"
Aqui é onde surgem as maiores dúvidas mas a explicação é simples.
Estes dois operadores realizam dois trabalhos “simplificados” em relação a duas demandas que geralmente temos no Range de Versão sendo:
a) atualizar da versão 2.1 em diante até que seja <3.0 e assim não permitir a quebra de versão principal.
b) atualizar da versão 2.1.0 em diante até que seja <2.2 e assim permitir somente atualizações dentro da própria versão especificada seja permitida como bugfixes, security fixes, etc.
Desta forma, podemos dizer que:
a) ~2.9.0 seria a mesma coisa que >=2.9.0 <2.10.0
b) ^2.8.0 seria a mesma coisa que >=2.8 <3.0.0
A documentação completa pode ser encontrada no link abaixo muito bem explicadinho:
https://getcomposer.org/doc/articles/versions.md
E aí, curtiu? Compartilhe em suas redes sociais…