{"id":76257,"date":"2024-02-01T13:52:59","date_gmt":"2024-02-01T12:52:59","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=76257&#038;preview=true&#038;preview_id=76257"},"modified":"2024-02-07T10:33:25","modified_gmt":"2024-02-07T09:33:25","slug":"creare-pacchetto-composer","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/","title":{"rendered":"Come creare un pacchetto Composer"},"content":{"rendered":"<p>Riutilizzare il codice comporta il problema della gestione delle dipendenze, storicamente un processo piuttosto manuale e soggetto a errori. Fortunatamente, negli ultimi anni la maggior parte dei linguaggi di programmazione ha risolto questo problema introducendo diversi strumenti per la gestione delle dipendenze. Nell&#8217;ecosistema <a href=\"https:\/\/kinsta.com\/php\/\">PHP<\/a>, <a href=\"https:\/\/kinsta.com\/it\/blog\/installare-composer\/\">Composer<\/a> \u00e8 diventato lo standard grazie alla sua semplicit\u00e0 d&#8217;uso, alla sua flessibilit\u00e0 e alla sua ampia adozione.<\/p>\n<p>Anche se Composer \u00e8 stato creato per la gestione delle dipendenze, potete utilizzarlo anche per attivit\u00e0 quali:<\/p>\n<ul>\n<li><strong>Autoloading:<\/strong> caricare automaticamente classi e funzioni da librerie esterne per renderle facilmente accessibili dal vostro codice e semplificare il processo di integrazione del codice esterno nel progetto.<\/li>\n<li><strong>Generazione di codice:<\/strong> genera codice di base per il vostro progetto, come i file di configurazione o altri frammenti di codice comunemente usati per accelerare il processo di sviluppo e garantire la coerenza.<\/li>\n<li><strong>Scripting:<\/strong> un sistema di scripting integrato pu\u00f2 automatizzare attivit\u00e0 comuni, come l&#8217;esecuzione di test o la generazione di documentazione dalla vostra base di codice. Questo pu\u00f2 aiutare a snellire il flusso di lavoro dello sviluppo e a ridurre il lavoro manuale.<\/li>\n<\/ul>\n<p>Questo tutorial vi guider\u00e0 passaggio per passaggio nella creazione del vostro pacchetto Composer e nella sua pubblicazione su <a href=\"https:\/\/packagist.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Packagist<\/a>, un repository di pacchetti PHP che gli sviluppatori di tutto il mondo possono utilizzare nei loro progetti.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Come funziona Composer?<\/h2>\n<p>Per prima cosa, assicuriamoci di aver compreso Composer. In parole povere, Composer funziona utilizzando un file <strong>composer.json<\/strong> che contiene le definizioni delle dipendenze del progetto PHP. Cerca questi pacchetti da un repository centralizzato e poi scarica e installa automaticamente le dipendenze utilizzando il repo dei pacchetti.<\/p>\n<p>Supponendo che abbiate gi\u00e0 <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">installato Composer<\/a> nel vostro ambiente di lavoro PHP, ecco come si presenta il processo di download e installazione delle dipendenze:<\/p>\n<ol>\n<li>Definite le dipendenze necessarie per il vostro progetto in un file <strong>composer.json<\/strong> nella directory principale del progetto. Questo file include le informazioni sulle librerie necessarie e le loro versioni, nonch\u00e9 qualsiasi altra impostazione di configurazione o dipendenza per tali librerie.<\/li>\n<li>Risolvete le dipendenze in Composer con comandi come <code>install<\/code> per installare le dipendenze richieste; <code>update<\/code> per aggiornare le dipendenze esistenti e <code>require<\/code> per aggiungere nuove dipendenze al file <strong>composer.json<\/strong>. Quando eseguite un comando, Composer legge il file <strong>composer.json<\/strong> per determinare le dipendenze necessarie, controlla il repo dei pacchetti per trovare l&#8217;ultima versione di ogni dipendenza adatta al vostro ambiente PHP e verifica eventuali conflitti o vincoli di versione.<\/li>\n<li>Composer scarica e installa le dipendenze necessarie, comprese le librerie, nella directory <strong>vendor<\/strong> del vostro progetto. Composer crea un file <strong>composer.lock<\/strong> che registra le versioni esatte delle dipendenze installate.<\/li>\n<li>Composer imposta un autoloader che carica automaticamente le classi e le funzioni dalle dipendenze installate. In questo modo \u00e8 facile utilizzare le librerie installate nel vostro progetto senza dover includere manualmente ogni file.<\/li>\n<\/ol>\n<p>Per farla breve, Composer semplifica la gestione delle dipendenze nei <a href=\"https:\/\/kinsta.com\/it\/quota-di-mercato-php\/\">progetti PHP<\/a>, rendendo pi\u00f9 facile l&#8217;installazione, l&#8217;aggiornamento e l&#8217;utilizzo di librerie e framework esterni.<\/p>\n<h2>Creare e pubblicare un pacchetto Composer<\/h2>\n<p>Questo tutorial vi mostra come creare una semplice libreria PHP chiamata <strong>tempconv<\/strong> che converte la temperatura Celsius in Fahrenheit e viceversa e come pubblicarla come pacchetto Composer.<\/p>\n<h3>Prerequisiti<\/h3>\n<p>Prima di iniziare, dovrete avere a disposizione un paio di cose:<\/p>\n<ul>\n<li>PHP e Composer installati correttamente sul vostro sistema. Al momento in cui scriviamo, l&#8217;ultima versione di Composer \u00e8 la v2.6.6, ma queste istruzioni dovrebbero funzionare con qualsiasi variante della v2.<\/li>\n<li><a href=\"https:\/\/github.com\/signup\" target=\"_blank\" rel=\"noopener noreferrer\">Un account GitHub<\/a> per creare un repository per ospitare il vostro codice.<\/li>\n<li><a href=\"https:\/\/packagist.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Un account Packagist<\/a> per pubblicare la vostra libreria.<\/li>\n<\/ul>\n<h3>Creare un repository del progetto<\/h3>\n<p>Create il vostro repository GitHub per questo tutorial, dove potrete inserire il codice e i file della vostra libreria finita.<\/p>\n<figure id=\"attachment_174156\" aria-describedby=\"caption-attachment-174156\" style=\"width: 1536px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-github-repository.png\" alt=\"Schermata della pagina visualizzata durante la creazione di un repository su GitHub.\" width=\"1536\" height=\"1408\"><figcaption id=\"caption-attachment-174156\" class=\"wp-caption-text\">Creare il repository del progetto su GitHub.<\/figcaption><\/figure>\n<p>Questo tutorial utilizza il nome del progetto <strong>tempconv<\/strong>. Nel campo Descrizione, fornite brevi dettagli sull&#8217;applicazione. Selezionate la casella per aggiungere un file README, scegliete il modello Composer per l&#8217;opzione <strong>Aggiungi .gitignore<\/strong> e selezionate una licenza a vostra scelta &#8211; questo tutorial utilizza la <strong>licenza MIT<\/strong>. Infine, cliccate su <strong>Create repository<\/strong>.<\/p>\n<h3>Clonare il repository<\/h3>\n<p>Clonate il repository appena creato sul vostro computer locale. Non dimenticate di sostituire l&#8217;URL con il vostro, sia qui che in tutto il tutorial:<\/p>\n<pre><code class=\"language-bash\">$ git clone https:\/\/github.com\/rexfordnyrk\/tempconv.git<\/code><\/pre>\n<p>Questo crea una directory chiamata <strong>tempconv<\/strong> nella vostra directory di lavoro corrente. A questo punto, contiene solo i file <strong>README.md<\/strong>, <strong>LICENSE<\/strong> e <strong>.gitignore<\/strong>, ma anche qui creerete i file del vostro pacchetto.<\/p>\n<h3>Creare la libreria PHP<\/h3>\n<p>Nella cartella del progetto, aggiungete un file chiamato <strong>TemperatureConverter.php<\/strong> con il seguente codice:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace RexfordnyrkTempconv;\n\nclass TemperatureConverter\n{\n    \/\/Caller must provide the temperature value and the unit either C Celsius or F Fahrenheit\n    public function convert($temperature, $unit)\n    {\n        \/\/Checking whether the unit we're working with is Celsius or Fahrenheit\n        if ($unit === 'C') {\n            $fahrenheit = ($temperature * 9 \/ 5) + 32;\n            return $fahrenheit;\n        } elseif ($unit === 'F') {\n            $celsius = ($temperature - 32) * 5 \/ 9;\n            return $celsius;\n        } else {\n            \/\/Throwing error if the unit provided is neither C nor F\n            throw new InvalidArgumentException('Invalid unit, only C (Celsius) or F (Fahrenheit) are allowed');\n        }\n    }\n}<\/code><\/pre>\n<p>Questa classe ha un unico metodo chiamato <code>convert<\/code> che accetta la temperatura e l&#8217;unit\u00e0 come argomenti e restituisce la temperatura convertita. Lancia un&#8217;eccezione se l&#8217;unit\u00e0 non \u00e8 valida.<\/p>\n<p>Per ora \u00e8 sufficiente. In uno scenario reale, probabilmente scriverete dei test unitari per assicurarvi che il vostro codice funzioni come previsto dopo le modifiche o gli aggiornamenti.<\/p>\n<h2>Creare il pacchetto composer.<\/h2>\n<p>Una volta creato il codice della libreria, \u00e8 il momento di creare un pacchetto Composer. Genererete un file <strong>composer.json<\/strong> per il vostro pacchetto utilizzando una procedura guidata passo dopo passo, e tratteremo alcune best practice per organizzare il codice come pacchetto prima di inviarlo al repository.<\/p>\n<h3>Generare un file di pacchetto composer.json<\/h3>\n<p>Sebbene possiate scrivere manualmente il contenuto di un file <strong>composer.json<\/strong> nella cartella principale del vostro progetto, \u00e8 meglio generarlo usando il seguente comando di Composer:<\/p>\n<pre><code class=\"language-bash\">$ composer init<\/code><\/pre>\n<p>Questo comando d\u00e0 inizio a una piccola procedura guidata passo dopo passo. Le risposte che darete a richieste come il nome del pacchetto, la descrizione, le informazioni sull&#8217;autore e il tipo di licenza genereranno il file <strong>composer.json<\/strong> del vostro pacchetto.<\/p>\n<p>La <a href=\"https:\/\/getcomposer.org\/doc\/04-schema.md\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione di Composer<\/a> illustra i valori attesi e le altre opzioni che potete utilizzare per definire il composer. <strong>json<\/strong> del vostro progetto.<\/p>\n<figure id=\"attachment_174172\" aria-describedby=\"caption-attachment-174172\" style=\"width: 960px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-init-wizard.png\" alt=\"Schermata del generatore di configurazioni di Composer in azione.\" width=\"960\" height=\"1047\"><figcaption id=\"caption-attachment-174172\" class=\"wp-caption-text\">Usare <strong>composer init<\/strong> per generare una configurazione.<\/figcaption><\/figure>\n<p>Notate che la procedura guidata fornisce delle risposte predefinite alle domande dove possibile, come ad esempio la derivazione del vostro nome e della vostra email da git. Sentitevi liberi di cambiarle se volete.<\/p>\n<p>Questa libreria non dipende da altri pacchetti per le sue funzionalit\u00e0, quindi potete rispondere <strong>No<\/strong> alle domande che specificano le dipendenze.<\/p>\n<p>La procedura guidata mostra un&#8217;anteprima del contenuto del file generato e chiede di confermarlo per completare la procedura.<\/p>\n<h3>Organizzare i file del pacchetto<\/h3>\n<p>Il completamento della procedura guidata crea due directory oltre al file <strong>composer.json<\/strong>:<\/p>\n<ul>\n<li><strong>src<\/strong> per il codice sorgente<\/li>\n<li><strong>vendor<\/strong> per le dipendenze scaricate<\/li>\n<\/ul>\n<p>Spostate il file <strong>TemperatureConverter.php<\/strong> nella cartella <strong>src<\/strong>. Se la vostra libreria ha delle dipendenze, eseguite <code>composer install<\/code> per generare l&#8217;autoloader e installare le dipendenze del pacchetto.<\/p>\n<h3>Caricare il codice su GitHub<\/h3>\n<p>Aggiungete le modifiche e i nuovi file a git:<\/p>\n<pre><code class=\"language-bash\">$ git add -A<\/code><\/pre>\n<p>Eseguite il commit delle modifiche apportate al repository locale ed effettuate il push al repo remoto su GitHub in modo da poter pubblicare facilmente il progetto nella prossima sezione:<\/p>\n<pre><code class=\"language-bash\">$ git commit -am \"Initial Release\" && git push<\/code><\/pre>\n<h3>Creare una versione release per la libreria<\/h3>\n<p>Con il codice nel vostro repository, potete creare una versione della vostra libreria con un numero di versione in modo che gli altri sviluppatori possano tenere traccia degli aggiornamenti stabili e significativi.<\/p>\n<p>Andate al vostro repo su GitHub e cliccate su <strong>Releases<\/strong> sotto la sezione <strong>About<\/strong>. Nella pagina delle release, in cui si suppone che non ci sia nulla al momento, cliccate su <strong>Create a new release<\/strong>.<\/p>\n<figure id=\"attachment_174174\" aria-describedby=\"caption-attachment-174174\" style=\"width: 1839px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-github-releases.png\" alt=\"Una schermata della pagina delle release di GutHub.\" width=\"1839\" height=\"684\"><figcaption id=\"caption-attachment-174174\" class=\"wp-caption-text\">La pagina delle <strong>Release<\/strong> di GitHub.<\/figcaption><\/figure>\n<p>Inserite alcuni dettagli sulla vostra release, come la versione del tag e il titolo della release. La versione del tag deve essere un identificativo unico per questa release (ad esempio: <em>v1.0.0<\/em>) e il titolo della release deve descrivere le modifiche che include (ad esempio: <em>Initial release<\/em>).<\/p>\n<p>Opzionalmente, potete aggiungere una descrizione della versione. Se volete caricare un file, ad esempio un file binario compilato o un archivio di codice sorgente, potete trascinare il file nell&#8217;area <strong> Attach binaries by dropping them here or selecting them<\/strong>, ma non \u00e8 necessario per questo tutorial.<\/p>\n<figure id=\"attachment_174176\" aria-describedby=\"caption-attachment-174176\" style=\"width: 1897px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-github-releases-details.png\" alt=\"Schermata che mostra i dettagli inseriti nella pagina delle release di GitHub.\" width=\"1897\" height=\"1302\"><figcaption id=\"caption-attachment-174176\" class=\"wp-caption-text\">Inserire i dettagli della release iniziale su GitHub.<\/figcaption><\/figure>\n<p>Cliccate su <strong>Publish release<\/strong> per creare la release.<\/p>\n<p>Il vostro progetto dovrebbe ora essere disponibile nella pagina delle <strong>Release<\/strong> del vostro repository. Gli utenti possono scaricare i file che avete allegato e visualizzare le note di rilascio. Inoltre, se avete aggiunto un tag per la release, gli altri sviluppatori possono utilizzarlo per verificare il codice esatto incluso.<\/p>\n<p>La vostra libreria \u00e8 pronta per essere condivisa con il mondo. Pubblichiamola come pacchetto su Packagist.<\/p>\n<h2>Come iniziare con Packagist<\/h2>\n<p>Packagist \u00e8 il principale repository di pacchetti per PHP. Offre una posizione centrale agli sviluppatori per pubblicare e condividere i loro pacchetti PHP e agli altri sviluppatori per scoprire e utilizzare questi pacchetti nei loro progetti. Pubblichiamo il vostro pacchetto!<\/p>\n<p>Andate sul <a href=\"https:\/\/packagist.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">sito web di Packagist<\/a>, cliccate su <strong>Login<\/strong> e selezionate <strong>GitHub<\/strong> come metodo di accesso per utilizzare il vostro account GitHub per l&#8217;autenticazione.<\/p>\n<figure id=\"attachment_174182\" aria-describedby=\"caption-attachment-174182\" style=\"width: 900px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-packagist-signup.png\" alt=\"Schermata che mostra la pagina di autorizzazione di Packagist via GitHub.\" width=\"900\" height=\"964\"><figcaption id=\"caption-attachment-174182\" class=\"wp-caption-text\">Accesso a Packagist con GitHub.<\/figcaption><\/figure>\n<p>Cliccate su <strong>Authorize<\/strong> per concedere a Packagist il permesso di accedere all&#8217;account.<\/p>\n<figure id=\"attachment_174183\" aria-describedby=\"caption-attachment-174183\" style=\"width: 1178px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-packagist-login.png\" alt=\"Schermata di un utente connesso a Packagist.\" width=\"1178\" height=\"326\"><figcaption id=\"caption-attachment-174183\" class=\"wp-caption-text\">Accesso a Packagist con GitHub riuscito.<\/figcaption><\/figure>\n<h3>Inviare il pacchetto Composer su Packagist<\/h3>\n<p>Per pubblicare un pacchetto su Packagist, inviate il repository GitHub contenente il file <strong>composer.json<\/strong> che descrive il vostro pacchetto e le sue dipendenze. Cliccate su <strong>Submit<\/strong> sul sito di Packagist, fornite l&#8217;URL del vostro repository nella pagina che appare e cliccate su <strong>Check<\/strong> per convalidarlo.<\/p>\n<p>Se il repository \u00e8 valido, Packagist rileva il nome del pacchetto e il pulsante <strong>Check<\/strong> diventa <strong>Submit<\/strong>.<\/p>\n<figure id=\"attachment_174185\" aria-describedby=\"caption-attachment-174185\" style=\"width: 1156px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-174185\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-packagist-validated.png\" alt=\"Schermata dei dettagli del pacchetto Composer pronto per l'invio su Packagist.\" width=\"1156\" height=\"502\"><figcaption id=\"caption-attachment-174185\" class=\"wp-caption-text\">Il pacchetto Composer <strong>rexfordnyrk\/tempconv<\/strong> \u00e8 stato convalidato e pronto per essere inviato.<\/figcaption><\/figure>\n<p>Fate clic su <strong>Submit<\/strong> e Packagist si prender\u00e0 un attimo per configurare e pubblicare il vostro progetto.<\/p>\n<figure id=\"attachment_174186\" aria-describedby=\"caption-attachment-174186\" style=\"width: 1312px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/create-composer-package-packagist-published.png\" alt=\"Schermata dei dettagli del pacchetto Composer dopo la pubblicazione.\" width=\"1312\" height=\"1023\"><figcaption id=\"caption-attachment-174186\" class=\"wp-caption-text\">Il pacchetto Composer \u00e8 stato pubblicato con successo.<\/figcaption><\/figure>\n<p>Ecco fatto! Il vostro pacchetto \u00e8 ora disponibile su Packagist per essere utilizzato da altri sviluppatori come dipendenza nei loro progetti.<\/p>\n<h2>Utilizzare il pacchetto Composer in altri progetti<\/h2>\n<p>Da adesso in poi, potrete utilizzare il vostro pacchetto pubblicato in altri progetti aggiungendolo come dipendenza nel file <strong>composer.json<\/strong>. Potete creare e modificare manualmente il file, ma \u00e8 meglio usare il comando Composer come segue:<\/p>\n<pre><code class=\"language-bash\">$ composer require rexfordnyrk\/tempconv<\/code><\/pre>\n<p>Composer crea automaticamente il file <strong>composer.json<\/strong> se non esiste gi\u00e0, quindi trova, scarica e carica automaticamente il pacchetto da Packagist. L&#8217;output dovrebbe essere simile a questo:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/01\/requiring-package-in-composer.png\" alt=\"Schermata del terminale dopo l'aggiunta di una libreria a un progetto con Composer.\"><\/p>\n<p>Create un file <strong>demo.php<\/strong> che contenga il codice della vostra applicazione dimostrativa per lavorare con la vostra libreria.<br \/>\nPotete quindi utilizzare la classe <code>TemperatureConverter<\/code> nel codice della vostra applicazione in questo modo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse RexfordnyrkTempconvTemperatureConverter;\n\nrequire_once '.\/vendor\/autoload.php';\n\n$converter =  new TemperatureConverter();\n\n$fahrenheit = $converter-&gt;convert(20, 'C');\necho \"20\u00b0C is equivalent to $fahrenheit \u00b0Fn\";\n\n$celsius = $converter-&gt;convert(68, 'F');\necho \"68\u00b0F is equivalent to $celsius \u00b0Cn\";<\/code><\/pre>\n<p>Questo codice utilizza la classe <code>TemperatureConverter<\/code> per convertire le temperature di 20 Celsius e 68 Fahrenheit e fornire i risultati. Il file <strong>autoloader.php<\/strong> importato \u00e8 stato creato da Composer per caricare tutte le dipendenze necessarie. Questo si occupa di caricare automaticamente la classe quando necessario.<\/p>\n<p>Infine, eseguite questo codice nel vostro terminale:<\/p>\n<pre><code class=\"language-bash\">$ php demo.php<\/code><\/pre>\n<p>Dovreste ottenere un risultato simile a questo:<\/p>\n<pre><code class=\"language-bash\">$ php demo.php\n20\u00b0C is equivalent to 68 \u00b0F\n68\u00b0F is equivalent to 20 \u00b0C<\/code><\/pre>\n<h2>Riepilogo<\/h2>\n<p>Ed eccoci qui, avete appena creato una semplice libreria PHP che converte la temperatura da Celsius a Fahrenheit e viceversa in una classe orientata agli oggetti che pu\u00f2 essere riutilizzata in altre applicazioni. Abbiamo visto insieme come utilizzare Composer per creare un pacchetto dalla classe con il comando Composer Init e abbiamo appreso alcune pratiche di base per l&#8217;organizzazione del codice della vostra libreria. Infine, avete pubblicato la vostra libreria su Packagist, in modo che voi e altri sviluppatori possiate utilizzarla come dipendenza in altri progetti.<\/p>\n<p>Naturalmente, una volta terminato lo sviluppo della vostra applicazione, dovrete scegliere un host. Portate il vostro sviluppo PHP a un livello superiore con l&#8217;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hosting di Applicazioni web<\/a> di Kinsta. Potete distribuire la vostra <a href=\"https:\/\/docs.sevalla.com\/templates\/overviewphp-examples\">applicazione PHP basata su Composer<\/a> in pochi minuti. Basta <a href=\"https:\/\/docs.sevalla.com\/applications\/get-started\/add-an-application\">aggiungere la vostra applicazione<\/a> tramite il repository git del progetto e Kinsta si occuper\u00e0 di tutto il resto. Rileva automaticamente il file Composer e costruisce automaticamente la vostra applicazione. <a href=\"https:\/\/sevalla.com\/pricing\/\">Iniziate<\/a> oggi stesso senza rischi!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Riutilizzare il codice comporta il problema della gestione delle dipendenze, storicamente un processo piuttosto manuale e soggetto a errori. Fortunatamente, negli ultimi anni la maggior parte &#8230;<\/p>\n","protected":false},"author":306,"featured_media":76258,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25945,25883],"class_list":["post-76257","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-linguaggi-sviluppo-web","topic-strumenti-di-sviluppo-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Come creare e pubblicare un pacchetto Composer - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come creare un pacchetto Composer\" \/>\n<meta property=\"og:description\" content=\"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-01T12:52:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-07T09:33:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rexford Nyarko\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rexford Nyarko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/\"},\"author\":{\"name\":\"Rexford Nyarko\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/53c94a171caf3b63f1aeaa9aef1eab8c\"},\"headline\":\"Come creare un pacchetto Composer\",\"datePublished\":\"2024-02-01T12:52:59+00:00\",\"dateModified\":\"2024-02-07T09:33:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/\"},\"wordCount\":1982,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/\",\"name\":\"Come creare e pubblicare un pacchetto Composer - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg\",\"datePublished\":\"2024-02-01T12:52:59+00:00\",\"dateModified\":\"2024-02-07T09:33:25+00:00\",\"description\":\"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Strumenti di Sviluppo Web\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/strumenti-di-sviluppo-web\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Come creare un pacchetto Composer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/53c94a171caf3b63f1aeaa9aef1eab8c\",\"name\":\"Rexford Nyarko\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8ea3fcc13c21943da23935661f79d708?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8ea3fcc13c21943da23935661f79d708?s=96&d=mm&r=g\",\"caption\":\"Rexford Nyarko\"},\"description\":\"Rexford Nyarko is a solution architect with a background in software and network systems, cloud environments, server administration, and various database technologies. Rexford particularly enjoys explaining technical concepts to non-technical audiences.\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/rexfordnyarko\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come creare e pubblicare un pacchetto Composer - Kinsta\u00ae","description":"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/","og_locale":"it_IT","og_type":"article","og_title":"Come creare un pacchetto Composer","og_description":"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.","og_url":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2024-02-01T12:52:59+00:00","article_modified_time":"2024-02-07T09:33:25+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg","type":"image\/jpeg"}],"author":"Rexford Nyarko","twitter_card":"summary_large_image","twitter_description":"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Rexford Nyarko","Tempo di lettura stimato":"12 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/"},"author":{"name":"Rexford Nyarko","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/53c94a171caf3b63f1aeaa9aef1eab8c"},"headline":"Come creare un pacchetto Composer","datePublished":"2024-02-01T12:52:59+00:00","dateModified":"2024-02-07T09:33:25+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/"},"wordCount":1982,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/","url":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/","name":"Come creare e pubblicare un pacchetto Composer - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg","datePublished":"2024-02-01T12:52:59+00:00","dateModified":"2024-02-07T09:33:25+00:00","description":"Hai costruito una fantastica libreria PHP, ora condividi il tuo codice con altri sviluppatori creando il tuo pacchetto Composer.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/02\/create-composer-package.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/creare-pacchetto-composer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Strumenti di Sviluppo Web","item":"https:\/\/kinsta.com\/it\/argomenti\/strumenti-di-sviluppo-web\/"},{"@type":"ListItem","position":3,"name":"Come creare un pacchetto Composer"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/53c94a171caf3b63f1aeaa9aef1eab8c","name":"Rexford Nyarko","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8ea3fcc13c21943da23935661f79d708?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8ea3fcc13c21943da23935661f79d708?s=96&d=mm&r=g","caption":"Rexford Nyarko"},"description":"Rexford Nyarko is a solution architect with a background in software and network systems, cloud environments, server administration, and various database technologies. Rexford particularly enjoys explaining technical concepts to non-technical audiences.","url":"https:\/\/kinsta.com\/it\/blog\/author\/rexfordnyarko\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/76257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/306"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=76257"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/76257\/revisions"}],"predecessor-version":[{"id":76324,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/76257\/revisions\/76324"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/76257\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/76258"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=76257"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=76257"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=76257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}