Vous souhaitez créer un package PHP à partir de zéro et le partager avec d'autres développeurs PHP? Composer, cet outil de gestion des dépendances, facilite ce processus! Grâce au compositeur, PHP possède l'un des écosystèmes de package les plus élevés. Jetons un aperçu plus approfondi sur la façon de créer des packages PHP étape par étape.
Cet article s'adresse principalement aux débutants PHP (ou aux débutants de rédaction de packages PHP) et vise à les aider à apprendre à créer des packages PHP à partir de zéro.
La création d'un nouveau package PHP nécessite les tâches suivantes:
composer.json
Fichier Bien que nous puissions d'abord créer un projet GitHub vide et le cloner localement, nous créerons un nouveau dossier directement localement, initialiserons le projet, puis pousserons le code source vers GitHub plus tard:
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码
composer init
vous guidera pour configurer des projets de manière interactive, définir les noms de packages, les auteurs, les licences, etc. et rechercher des dépendances de package. Vous pouvez remplir ces informations comme vous le souhaitez, mais par souci de concision, c'est là que nous commençons:
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
Nous avons la configuration de base du package, mais cela ne fera pas beaucoup de travail. Si le package utilise uniquement le langage PHP de base, certains packages ne nécessitent aucune dépendance. Quoi qu'il en soit, vous devez configurer le chargement automatique afin que les utilisateurs de votre package puissent charger des fonctions et des classes dans leurs projets.
Lorsque vous êtes prêt à connecter votre paiement local à un système de contrôle de version comme GitHub, vous pouvez suivre les instructions pour ajouter un référentiel distant. Il peut être similaire à la commande suivante:
git remote add origin git@github.com:laravelnews/example-package.git
, nous pouvons continuer à créer le code source. Vous devez décider où stocker le code source de votre projet. Les dossiers peuvent être nommés à volonté, mais la "norme" typique est composer.json
ou src/
. Le compositeur ne se soucie pas du chemin que vous utilisez, mais vous devez demander au compositeur de charger automatiquement le fichier à l'aide de PSR-4. Utilisons le dossier lib/
et créons une classe pour notre exemple de package: src
$ mkdir src/ $ touch src/Api.php
et utilisez la touche composer.json
pour configurer l'autoloader: "autoload"
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {}, "autoload": { "psr-4": { "LaravelNews\Feed\": "src/" } } }
mappent l'espace de noms PHP dans un dossier. Lorsque nous créons des fichiers dans le dossier autoload.psr-4
, ils sont mappés sur l'espace de noms src
. Pour cet exemple, nous créons un fichier LaravelNewsFeed
qui demande et renvoie un flux Laravel News JSON. Si vous apprenez, ajoutez le code suivant à Api.php
: src/Api.php
<?php namespace LaravelNews\Feed; class Api { public function json(): array { $json = file_get_contents('https://laravel-news.com/feed/json'); return json_decode($json, true); } }
Il existe plusieurs façons, telles que l'exigence de ce package dans un autre projet via une dépendance des compositeurs locaux, et même en poussant le code vers GitHub et en exécutant dev-main
sur notre package. Cependant, nous pouvons également l'essayer en créant un fichier composer update
dans le répertoire racine du projet: index.php
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码
: composer install
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
après avoir ajouté l'espace de noms à composer.json
pour mettre à jour l'autoader du compositeur. dump-autoload
nous permet de commencer rapidement à utiliser nos packages, cependant, nous pouvons également commencer à utiliser notre code en créant une suite de tests. Faisons de la façon de le configurer! index.php
Le package
Composer dispose de deux ensembles d'exigences: la pièce contient les packages requis pour que le package s'exécute, et la pièce require
contient les packages requis pour le test. Jusqu'à présent, nous n'avons pas de packages require-dev
, ce qui peut se produire si vous n'avez pas besoin d'autres dépendances de package. require
git remote add origin git@github.com:laravelnews/example-package.git
pour garder les dépendances organisées: composer.json
$ mkdir src/ $ touch src/Api.php
. Après avoir créé le fichier, nous pouvons exécuter --init
pour tester notre code: pest
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {}, "autoload": { "psr-4": { "LaravelNews\Feed\": "src/" } } }
Ensuite, créons une classe simple que nous pouvons utiliser pour démontrer les tests de package. Cette classe obtiendra les derniers articles du Feed JSON de Laravel News et reviendra aux derniers articles.
Nous avons nommé cette classe fictive
et l'avons ajoutée au fichier NewsChecker
avec le contenu suivant: src/NewsChecker.php
<?php namespace LaravelNews\Feed; class Api { public function json(): array { $json = file_get_contents('https://laravel-news.com/feed/json'); return json_decode($json, true); } }
comme dépendance et nous nous moquerons de la moquer dans nos tests. Api
et ajouterons le test suivant pour vérifier la méthode tests/Feature/NewsCheckerTest.php
: latestArticle()
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码
Vous pouvez exécuter ces tests et vérifier que le code est valide en exécutant vendor/bin/pest
. Vous pouvez supprimer les exemples de tests créés après l'exécution pest --init
comme vous le souhaitez.
Nous avons couvert beaucoup de choses, en initialisant les référentiels Git, en configurant des packages PHP avec composer.json
, en ajoutant du code source et des tests, et en les exécutant avec les ravageurs. De là, vous pouvez publier votre colis sur Packagist!
Je vous recommande de vous inscrire et de consulter la documentation sur packagist.org où vous publierez une nouvelle version du package. Le processus de mise à jour des versions du package sur Packagist peut être automatisé, ce qui signifie que lorsque vous marquez une nouvelle version d'un package, ils apparaîtront automatiquement sur packagist.org.
Nous avons appris étape par étape sur la création de packages à partir de zéro, mais si vous utilisez GitHub, la création d'un référentiel de modèle pour votre organisation ou vos projets personnels peut être réalisé plus rapidement! Il existe des cadres de packages stellaires communautaires qui peuvent être utilisés comme point de départ pour votre prochain package compositeur:
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!