{<\/span>\n\u00a0<\/span>\"name\"<\/span>: <\/span>\"oi\/example\"<\/span>,<\/span>\n\u00a0<\/span>\"type\"<\/span>: <\/span>\"lib\"<\/span>,<\/span>\n\u00a0<\/span>\"description\"<\/span>: <\/span>\"Bundle di esempio\"<\/span>,<\/span>\n\u00a0<\/span>\"keywords\"<\/span>: <\/span>[<\/span>\"Example\"<\/span>]<\/span>,<\/span>\n\u00a0<\/span>\"homepage\"<\/span>: <\/span>\"https:\/\/www.oimmei.com\"<\/span>,<\/span>\n\u00a0<\/span>\"license\"<\/span>: <\/span>\"MIT\"<\/span>,<\/span>\n\u00a0<\/span>\"authors\"<\/span>: <\/span>[<\/span>\n\u00a0\u00a0\u00a0{<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>\"name\"<\/span>: <\/span>\"Ephraim Pepe <ephraim@oimmei.com>\"<\/span>\n\u00a0\u00a0\u00a0<\/span>}<\/span>\n\u00a0]<\/span>,<\/span>\n\u00a0<\/span>\"require\"<\/span>: <\/span>{<\/span>\n\u00a0\u00a0\u00a0<\/span>\"php\"<\/span>: <\/span>\">=7.1\"<\/span>\n\u00a0<\/span>}<\/span>,<\/span>\n\u00a0<\/span>\"autoload\"<\/span>: <\/span>{<\/span>\n\u00a0\u00a0\u00a0<\/span>\"psr-4\"<\/span>: <\/span>{<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>\"OiExampleBundle\"<\/span>: <\/span>\"src\/\"<\/span>\n\u00a0\u00a0\u00a0<\/span>}<\/span>,<\/span>\n\u00a0\u00a0\u00a0<\/span>\"exclude-from-classmap\"<\/span>: <\/span>[<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>\"\/Tests\/\"<\/span>\n\u00a0\u00a0\u00a0<\/span>]<\/span>\n\u00a0}<\/span>\n}<\/span>\n<\/pre>\nIl file json ha diverse chiavi, nel nostro caso d\u2019uso le pi\u00f9 significative sono:<\/span>\n\n \t- name:<\/b> nome della libreria, deve essere univoco in assoluto. Per installarla si dovr\u00e0 chiamare il comando <\/span>composer require oi\/example<\/b>, inoltre il name indica in quale cartella di vendor verr\u00e0 copiato il codice, quindi se voglio modificare la mia libreria potr\u00f2 andare cercare in \/vendors\/oi\/example<\/span><\/li>\n \t
- require: \u00e8 la parte pi\u00f9 importante del nostro composer.json e contiene tutte le dipendenze della nostra libreria<\/strong>, \u00e8 qui che vengono indicate le librerie necessarie e le loro versioni per il corretto funzionamento del codice che state scrivendo.<\/span><\/b><\/li>\n \t
- autoload\/psr-4<\/b>: contiene la mappatura dei namespaces<\/strong> (solitamente \u00e8 solo una, ma d\u00e0 comunque la possibilit\u00e0 di specificare anche pi\u00f9 namespaces), in questo caso il namespace OiExampleBundle avr\u00e0 come base \/vendors\/oi\/example\/src (nb<\/strong>: il valore \u201csrc\/\u201d pu\u00f2 essere anche omesso, e nel caso avessimo messo <\/span>“OiExampleBundle”<\/span>: <\/span>“” <\/span>OiExampleBundle avrebbe avuto come base \/vendors\/oi\/example\/).<\/span><\/li>\n<\/ul>\nLa documentazione completa di composer.json potete trovarla all\u2019indirizzo <\/span>https:\/\/getcomposer.org\/doc\/<\/span><\/a> e qui sar\u00e0 facile reperire tutte le informazioni su come strutturare il vostro file json.<\/span>\n\nPrima di proseguire, vi invito a visitare\u00a0Packagist<\/a><\/strong>\u00a0il repository manager di Composer<\/strong>. Qui possiamo ricercare le librerie pubbliche esistenti da includere eventualmente nel nostro progetto.<\/span>\n\nIl sito si presenta con il motore di ricerca e le istruzioni base per poter usare le librerie registrate e\/o contribuire con le proprie. Ipotizziamo di voler usare le funzionalit\u00e0 di Mapbox all\u2019interno del nostro codice e dopo aver effettuato la ricerca decidiamo ad esempio di voler usare la libreria <\/span>geocoder-php\/mapbox-provider<\/b>, scelta fatta perch\u00e9 confrontando il numero di utilizzi e la documentazione, rispetto ad altre \u00e8 decisamente la libreria migliore.<\/span>\n\nOra possiamo aggiornare il nostro file <\/strong>composer.json<\/b> aggiungendo delle dipendenze<\/strong>:<\/span>\n
{<\/span>\n\u00a0<\/span>\"name\"<\/span>: <\/span>\"oi\/example\"<\/span>,<\/span>\n\u00a0<\/span>\"type\"<\/span>: <\/span>\"lib\"<\/span>,<\/span>\n\u00a0<\/span>\"description\"<\/span>: <\/span>\"Bundle di esempio\"<\/span>,<\/span>\n\u00a0<\/span>\"keywords\"<\/span>: <\/span>[<\/span>\"Example\"<\/span>]<\/span>,<\/span>\n\u00a0<\/span>\"homepage\"<\/span>: <\/span>\"https:\/\/www.oimmei.com\"<\/span>,<\/span>\n\u00a0<\/span>\"license\"<\/span>: <\/span>\"MIT\"<\/span>,<\/span>\n\u00a0<\/span>\"authors\"<\/span>: <\/span>[<\/span>\n\u00a0\u00a0\u00a0{<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>\"name\"<\/span>: <\/span>\"Ephraim Pepe <ephraim@oimmei.com>\"<\/span>\n\u00a0\u00a0\u00a0<\/span>}<\/span>\n\u00a0]<\/span>,<\/span>\n\u00a0<\/span>\"require\"<\/span>: <\/span>{<\/span>\n\u00a0\u00a0\u00a0<\/span>\"php\"<\/span>: <\/span>\">=7.1\"<\/span>,<\/span>\n\u00a0\u00a0\u00a0<\/span>\"geocoder-php\/mapbox-provider\"<\/span>: <\/span>\"1.1.*\"<\/span>,<\/span>\n\u00a0\u00a0\u00a0\"symfony\/framework-bundle\"<\/span>:<\/span> \"^4.2 || ^5.0\"<\/span>\n\u00a0<\/span>}<\/span>,<\/span>\n\u00a0<\/span>\"conflict\"<\/span>: <\/span>{<\/span>\n\u00a0\u00a0\u00a0\"symfony\/framework-bundle\"<\/span>:<\/span> \"<4.2\"<\/span>\n\u00a0<\/span>}<\/span>,<\/span>\n\u00a0<\/span>\"autoload\"<\/span>: <\/span>{<\/span>\n\u00a0\u00a0\u00a0<\/span>\"psr-4\"<\/span>: <\/span>{<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>\"OiExampleBundle\"<\/span>: <\/span>\"src\/\"<\/span>\n\u00a0\u00a0\u00a0<\/span>}<\/span>,<\/span>\n\u00a0\u00a0\u00a0<\/span>\"exclude-from-classmap\"<\/span>: <\/span>[<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>\"\/Tests\/\"<\/span>\n\u00a0\u00a0\u00a0<\/span>]<\/span>\n\u00a0}<\/span>\n}<\/span><\/pre>\nVediamo che