Apprenez à distribuer vos packages PHP avec Packagist

Vous avez développé un magnifique package PHP dans lequel vous avez mis tout votre cœur et votre âme et dont vous êtes fier. Il est maintenant temps pour la distribution, et un élément clé est de vous assurer de fournir aux autres l'itinéraire le plus simple possible pour télécharger et utiliser votre package, mais comment?

Heureusement, pour cela, il existe Packagist un référentiel gratuit de facto pour toutes les dépendances de paquet PHP. Découvrez comment obtenir votre package PHP répertorié sur Packagist, permettant à d'autres de le télécharger et de l'installer avec une seule commande.

Structurez correctement votre colis

Avant la distribution, votre package doit être correctement structuré et doit utiliser des espaces de noms. Choisissez un espace de noms racine pour votre package. Cela peut être tout ce que vous souhaitez, mais il est généralement conseillé d'utiliser Author PackageName .

Par exemple, l'espace de noms JSmith BlogPoster informerait les autres que le développeur du package porte le nom Jsmith et il s'agit de leur package nommé BlogPoster .

Avec l'espace de noms racine décidé, créez un répertoire / src / dans votre projet et déplacez-y tous les fichiers PHP. Chaque fichier doit avoir la déclaration appropriée en haut, donc tous les fichiers PHP dans le répertoire / src / doivent commencer:

 
<?php
namespace JSmithBlogPoster;

La déclaration d'espace de noms est relative à la structure du répertoire. Par exemple, si vous avez un fichier dans /src/Images/Uploader.php, en haut du fichier, vous auriez:

 
<?php
namespace JSmithBlogPosterImages;
class Uploader
{
}

Enfin, assurez-vous que la déclaration de classe de tous les fichiers PHP est la même que le nom de fichier, comme le montre l'exemple ci-dessus. Le fichier Uploader.php porte le nom de classe Uploader .

Créer un compte Packagist

Si vous n'en avez pas déjà un, créez un compte Packagist , c'est rapide et gratuit. Bien que cela ne soit pas obligatoire, il est courant de s'enregistrer avec le même nom d'utilisateur que dans l'espace de noms racine que vous avez choisi dans la section ci-dessus. Si ce nom d'utilisateur n'est pas disponible, choisissez quelque chose de similaire.

Vous n'avez encore rien à faire avec le compte Packagist, mais il est utile de l'avoir prêt.

Créer un fichier composer.json

Ouvrez un éditeur de texte et, dans le répertoire racine de votre projet, créez un fichier composer.json , avec le contenu suivant utilisé comme exemple:

 
{
"name": "jsmith/blogposter",
"description": "An excellent blog posting package...",
"type": "package",
"homepage": "https://yourdomain.com",
"license": "MIT",
"require": {
"php": ">=8.0.0"
},
"autoload": {
"psr-4": {
"JSmithBlogPoster": "src/"
}
}
}

Il n'y a que deux aspects importants du fichier ci-dessus à prendre en compte.

Le premier est l'élément de nom en haut. Celui-ci doit être composé de deux chaînes séparées par une barre oblique, la première étant votre nom d'utilisateur Packagist et la seconde le nom souhaité du package. En utilisant l'exemple ci-dessus, le nom d'utilisateur Packagist est jsmith et le nom du package est blogposter .

Deuxièmement, en bas de la section de chargement automatique , vous remarquerez la ligne:

 "JSmithBlogPoster": "src/"

Modifiez cette ligne pour que l'espace de noms racine que vous avez choisi précédemment pointe vers le répertoire / src /. Lorsque votre package est installé par quelqu'un d'autre, Composer mappera automatiquement votre espace de noms racine au sous-répertoire dans lequel votre package a été installé.

Téléchargez votre package sur Github

Vous devez télécharger votre package PHP dans un référentiel Github, car c'est la principale méthode d'intégration utilisée par Packagist. Si vous n'êtes pas déjà familiarisé avec la création et la publication dans un référentiel Github, veuillez consulter Comment créer votre premier référentiel sur GitHub pour un excellent guide étape par étape.

Assurez-vous de télécharger l'intégralité de votre package PHP, y compris tous les fichiers dans / src / et le fichier composer.json. Si vous souhaitez simplement télécharger l'intégralité du répertoire du projet sur GitHub, ouvrez un terminal dans le répertoire de votre projet et exécutez:

 git add ./*
git commit -m "Initial commit"
git push -u origin master

Vous devez également ajouter une balise au référentiel GitHub, car les balises permettent à Packagist de suivre les versions et les numéros de version de vos packages. Pour marquer le référentiel actuel comme v0.1, exécutez les commandes:

 git tag 0.1
git push --tags

Ajouter une liste PHP sur Packagist

Tout est maintenant en place, donc avec le sourire, vous pouvez continuer et soumettre votre package PHP pour une liste instantanée sur Packagist. Visitez la page Soumettre le package et entrez l'URL de votre référentiel GitHub, qui ressemblera à ceci:

 https://github.com/jsmith/blogposter.git

Cliquez sur le bouton Vérifier soumettre et Packagist téléchargera le fichier composer.json à partir de votre référentiel, ainsi que toutes les balises / versions disponibles et d'autres informations.

La page suivante confirmera que vous souhaitez publier le package; une fois confirmé, vous pourrez consulter votre nouvelle liste Packagist à une URL telle que:

 https://packagist.org/packages/jsmith/blogposter

Installez votre package avec Composer

Essayez-le et installez votre package PHP avec Composer. Si vous n'avez pas encore installé Composer, vous pouvez l'installer avec la commande suivante:

 sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Créez un nouveau répertoire et exécutez la commande à l'intérieur de celui-ci:

 composer require jsmith/blogposter

Composer fera sa magie et vous remarquerez qu'un nouveau sous-répertoire / vendor / apparaîtra, dont si vous regardez à l'intérieur, vous verrez votre package PHP!

Faites-lui un test et chargez votre package PHP. En utilisant l'exemple ci-dessus, s'il y avait un fichier a /src/Blogger.php dans le package, un script de test rapide pour le charger serait:

 
<?php
use JSmithBlogPosterBlogger;
// Load composer dependences
require("./vendor/autoload.php");
// Get blogger
$client = new Blogger();
echo "Got a " . $client::class . "
";

Allez de l'avant et partagez avec le monde

Vous avez maintenant appris à quel point il est facile de structurer votre package PHP de manière appropriée et de le répertorier sur Packagist, permettant à n'importe qui dans le monde de télécharger et d'inclure instantanément votre package dans son projet avec une seule commande.

Félicitations, vous avez maintenant ouvert votre package PHP au canal de distribution principal de l'éco-système PHP. Allez de l'avant et partagez votre créativité et votre travail acharné avec le monde.