In questo articolo vedremo come creare un pacchetto PHP pubblico installabile tremite Composer.
Gli step da seguire sono i seguenti:
- Creare un account Github;
- Creare un repository pubblico;
- Pubblicare il pacchetto su packagist.org.
Per creare un account Github e un repository pubblico fare riferimento ai seguenti link
In questo esempio creerò un repository pubblico QRCode per generare un qrcode usando questa API di Google, inizialmente questo repository sarà vuoto il codice lo scriverò successivamente con il mio IDE preferito.
Adesso sul nostro Desktop creaiamo una cartella di nome QRCode e apriamo il Prompt dei comandi posizionandoci in questa cartella, e digitiamo il seguente comando
$ git clone https://github.com/MicheleDeF/QRCode.git .
in questo caso https://github.com/MicheleDeF è il mio account Github e QRCode.git è il repository, il punto (.) indica che il repository verrà scaricato nella cartella corrente, abbiamo così inizializzato un progetto con git associato al repository che abbiamo creato in precedenza (QRCode), la nostra cartella sarà così strutturata
- .git
- .gitignore
- LICENSE.md
- README.md
Adesso nella stessa cartella digitiamo il comando composer init
$ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [micde/qr-code]: micheledef/qr-code-php
ci verrà chiesto di scegliere un nome per il nostro pacchetto, nel mio caso è micheledef/qr-code-php, poi una descrizione facoltativa
Description []:
l'autore
Author [MicheleDeF <indirizzo email>, n to skip]:
la stabilità minima, possiamo scegliere tra diverse opzioni, in questo esempio scelgo stable
Minimum Stability []: stable
il tipo di pacchetto, anche qui abbiamo diverse opzioni, in questo caso scelgo library
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
la licenza, in questo esempio è MIT
License []: MIT
poi di definire eventuali dipendenze, in questo esempio nessuna, quindi premiamo invio senza scrivere niente
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:
poi ci chiede se vogliamo aggiungere una mappatura del caricamento automatico PSR-4, premiamo invio per accettare
Add PSR-4 autoload mapping? Maps namespace "Micheledef\QrCodePhp" to the entered relative path. [src/, n to skip]:
{
"name": "micheledef/qr-code-php",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"Micheledef\\QrCodePhp\\": "src/"
}
},
"authors": [
{
"name": "MicheleDeF",
"email": "<indirizzo email>"
}
],
"minimum-stability": "stable",
"require": {}
}
e infine di confermare la generazione
Do you confirm generation [yes]?
Generating autoload files
Generated autoload files
PSR-4 autoloading configured. Use "namespace Micheledef\QrCodePhp;" in src/
Include the Composer autoloader with: require 'vendor/autoload.php';
Il nostro progetto sarà così composto
- QRCode/
- .git
- src/
- vendor/
- .gitignore
- composer.json
- LICENSE.md
- README.md
A questo punto scriviamo il codice con il nostro IDE preferito e alla fine effettuiamo un git push per aggiornare il repository su Github, questo è il codice completo dell'esempio
e infine dal nostro profilo Github creiamo una Releases per il nostro repository ad esempio la v1.0.0
Tutto è pronto per pubblicare il nostro pacchetto su Packagist in modo da poterlo installare tramite Composer.
Creiamo un account su packagist.org, possiamo farlo usando l'account Github visto che già ne abbiamo uno, quindi dal menù Sign in clicchiamo su Use Github
una volta creato l'account su Packagist possiamo pubblicare il nostro pacchetto, clicchiamo su Submit nel menù in alto
visualizzeremo una pagina con un modulo dove specificare l'url del nostro repository GitHub
in questo esempio l'url è https://github.com/MicheleDeF/QRCode, clicchiamo sul bottone Check e il pacchetto sarà subito pronto per essere installato tramite Composer, questa è la pagina del pacchetto creato come esempio pubblicato su Packagist
packagist.org/packages/micheledef/qr-code-php