Order allow,deny Deny from all Order allow,deny Deny from all {"id":23778,"date":"2020-07-23T08:09:53","date_gmt":"2020-07-23T06:09:53","guid":{"rendered":"http:\/\/sviluppo.oimmei.com\/clienti\/oimmeidigitalboutique\/sito\/2020\/07\/23\/satis-e-composer-come-cambiano-la-vita-di-uno-sviluppatore\/"},"modified":"2024-11-18T17:15:55","modified_gmt":"2024-11-18T16:15:55","slug":"satis-e-composer-come-cambiano-la-vita-di-uno-sviluppatore","status":"publish","type":"post","link":"https:\/\/odc.oimmei.dev\/it\/satis-e-composer-come-cambiano-la-vita-di-uno-sviluppatore\/","title":{"rendered":"Satis e Composer: come cambiano la vita di uno sviluppatore"},"content":{"rendered":"\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t\tVi \u00e8 mai capitato di arrivare ad un punto della vostra vita da programmatori e dire:\u00a0<\/span>\u201cChe cavolo: devo sviluppare di nuovo una mappa con geolocalizzazone\u2026 vabb\u00e8, lo copio da un altro progetto!\u201d<\/strong>\u00a0<\/i>E poi ritrovarvi a migliorare la vostro mappa che vi state portando dietro da decine di progetti come la ruota di Fantozzi… e dopo averla migliorata, desiderare di aggiornarla ovunque?\n\nScordatevelo di farlo a mano!<\/strong> Riuscireste a tenere allineati massimo 2-3 progetti senza causare esplosioni termonucleari! Per\u00f2 viene la curiosit\u00e0 di capire come fa il resto del mondo, faccio ricerca e\u2026 ora sono pi\u00f9 di tre anni che abbiamo trovato una soluzione a questo problema<\/strong>, e ci piace condividere con voi il nostro modo di lavorare.<\/span>\n\nSe siete sviluppatori Symfony o Laravel saprete bene che cosa sia Composer, se invece usate WordPress\u2026 le mie pi\u00f9 sentite condoglianze!<\/span>\n\nComposer<\/strong>, per chi non lo sapesse, \u00e8 un gestore di dipendenze per librerie PHP<\/strong>, e tramite la configurazione di un file json \u00e8 possibile richiedere le librerie che intendiamo importare all\u2019interno del nostro progetto<\/strong>. Il suo repository manager pubblico \u00e8 Packagist<\/a> <\/strong><\/span>dove sono disponibili decine di migliaia di librerie PHP che possono aiutarti a velocizzare il tuo sviluppo, tra cui circa 4000 librerie pubbliche per Symfony e 24000 per Laravel. Chiunque pu\u00f2 contribuire alle community che usano composer come base dei propri progetti, ma come si fa?<\/strong><\/span>\n\nNon \u00e8 difficile: basta un repository git e sapere un minimo come funziona composer.\u00a0<\/span>\n\nProviamo a creare la nostra prima libreria<\/strong>: come esempio proveremo a fare un bundle per Symfony.<\/strong><\/span>\n\nCreiamo il nostro repository (es: su github o su bitbucket) e cloniamolo su computer.<\/span>\n\nIl primo passo<\/strong> da fare \u00e8 creare il file composer.json<\/strong>, che sar\u00e0 letto dal repository manager<\/strong> e indica tutte le dipendenze necessarie per il corretto funzionamento della libreria<\/strong> che sto creando.<\/span>\n\nUn esempio<\/strong> di composer.json, gi\u00e0 arricchito di qualche info accessoria pu\u00f2 essere<\/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>\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