Come abbiamo visto, è possibile specificare nel file composer.json quale versione specifica (esempio 1.2.* o 2.5) di ciascuna libreria vogliamo che Composer scarichi per noi. Queste versioni fanno ovviamente riferimento alle versioni che gli sviluppatori delle librerie gli assegnano.
È possibile specificare la versione di una libreria in diversi modi, definendo alcuni vincoli.
Versione esatta
Specificare la versione esatta di un pacchetto è il modo più semplice: è sufficiente indicare la versione precisa nel formato 5.2.2 , come abbiamo scritto in precedenza nella nostra guida a Composer
{
"require": {
"phpmailer/phpmailer": "5.2.2"
}
}Intervallo di versioni (range)
Usando gli operatori di comparazione possiamo tenere la versione del pacchetto entro certi limiti che definiamo. Possiamo usare gli operatori >, >=, <, <= e !=.
È possibile definire range multipli usando uno spazio o una virgola per separarli. In questo caso saranno trattati come se fossero legati da operatore logico AND. Per usare l’operatore OR dobbiamo usare una doppia pipe ||
Esempio:
{
"require": {
"phpmailer/phpmailer": ">=5.2.2 <5.3"
}
}In questo caso la versione sarà maggiore o uguale a 5.2.2 e minore di 5.3.
Nell’esempio sottostante invece, richiediamo il pacchetto phpmailer/phpmailer in versione maggiore a 5.2 oppure minore o uguale a 5.4.1.
{
"require": {
"phpmailer/phpmailer": ">5.2 || <= 5.4"
}
}Intervallo con il trattino
Questa particolare forma serve per specificare versioni un range di versioni inclusive. Per esempio usando 5.2 - 6.0 diciamo di usare tutte le versioni 5.2 (inclusa) fino alla 6.0 (esclusa). Equivale, quindi a scrivere >=5.2 <6.0.
Esempio:
{
"require": {
"phpmailer/phpmailer": "5.2 - 6.0"
}
}Usare l’asterisco (wildcard)
È possibile usare la wildcard * per specificare un range indefinito di possibile versioni, es. 5.2.* è equivalente a >=5.2 <5.3.
Prossima significativa versione
Quando ci riferiamo ad una versione, solitamente è indicata da una versione principale e una versione minore. Nell’esempio 5.2, facciamo riferimento alla release minore 2 della versione 5. È possibile usare l’operatore ∼ per indicare a Composer di aggiornare quel pacchetto fino alla versione significativa più vicina. Indicando ∼5.2 il sistema scaricherà le versioni maggiori uguali a 5.2 e minori della prossima, cioè 6.
Esempio:
{
"require": {
"phpmailer/phpmailer": "∼5.2"
}
}Vincoli di stabilità
Se non indicato diversamente, Composer aggiungerà automaticamente alla versione scelta un suffisso -dev o -stable. È possibile esplicitare questo comportamento aggiungendo manualmente il suffisso.
Esempio:
{
"require": {
"phpmailer/phpmailer": "∼5.2-stable"
}
}