Heim >Backend-Entwicklung >PHP-Tutorial >So erstellen Sie Ihr erstes PHP -Paket
Möchten Sie ein PHP -Paket von Grund auf erstellen und es mit anderen PHP -Entwicklern teilen? Der Komponist, dieses Abhängigkeitsmanagement -Tool, macht diesen Prozess einfach! Dank des Komponisten hat PHP eines der Top -Paketökosysteme. Schauen wir uns einen tieferen Blick darauf an, wie PHP -Pakete Schritt für Schritt erstellen.
Dieser Artikel richtet sich hauptsächlich auf PHP -Neulinge (oder PHP -Paket -Schreibanfänger) und zielt darauf ab, zu lernen, wie man PHP -Pakete von Grund auf neu erstellen.
Erstellen eines neuen PHP -Pakets erfordert die folgenden Aufgaben:
composer.json
Datei Während wir zuerst ein leeres Github -Projekt erstellen und lokal klonen, erstellen wir einen neuen Ordner direkt lokal, das Projekt initialisieren und dann den Quellcode später in GitHub drücken:
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码Mit dem Befehl
composer init
werden Sie dazu veranlasst, Projekte interaktiv einzurichten, Paketnamen, Autoren, Lizenzen usw. Werte festzulegen und nach Paketabhängigkeiten zu suchen. Sie können diese Informationen nach Belieben ausfüllen, aber aus Gründen der Kürze beginnen wir hier:
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
Wir haben die grundlegende Konfiguration des Pakets, aber es wird nicht viel Arbeit leisten. Wenn das Paket nur die Kern -PHP -Sprache verwendet, benötigen einige Pakete keine Abhängigkeiten. Unabhängig davon müssen Sie automatisches Laden einrichten, damit Ihre Paketbenutzer Funktionen und Klassen in ihren Projekten laden können.
Wenn Sie bereit sind, Ihre lokale Checkout an ein Versionskontrollsystem wie GitHub zu verbinden, können Sie die Anweisungen zum Hinzufügen eines Remote -Repositorys befolgen. Es kann dem folgenden Befehl ähnlich sein:
git remote add origin git@github.com:laravelnews/example-package.git
können wir den Quellcode weiter erstellen. Sie müssen entscheiden, wo der Quellcode in Ihrem Projekt gespeichert werden soll. Ordner können nach Belieben benannt werden, aber der typische "Standard" ist composer.json
oder src/
. Composer kümmert sich nicht darum, welchen Pfad Sie verwenden, aber Sie müssen den Komponisten anweisen, die Datei automatisch mit PSR-4 zu laden. Verwenden wir den Ordner lib/
und erstellen Sie eine Klasse für unser Beispielpaket: src
$ mkdir src/ $ touch src/Api.phpÖffnen Sie als nächstes die Datei
und verwenden Sie die Taste composer.json
, um den Autoloader zu konfigurieren: "autoload"
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {}, "autoload": { "psr-4": { "LaravelNews\Feed\": "src/" } } }
Tasten Sie den PHP -Namespace in einen Ordner. Wenn wir Dateien im Ordner autoload.psr-4
erstellen, werden sie dem src
-Namespace zugeordnet. In diesem Beispiel erstellen wir eine LaravelNewsFeed
-Datei, die einen Laravel News JSON -Feed anfordert und zurückgibt. Wenn Sie lernen, fügen Sie den folgenden Code zu Api.php
: src/Api.php
hinzu
<?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); } }Wie probieren wir unsere neue Klasse sofort aus?
Es gibt verschiedene Möglichkeiten, beispielsweise dieses Paket in einem anderen Projekt über eine lokale Komponist -Abhängigkeit zu verlangen und den Code sogar in GitHub zu drücken und dev-main
in unserem Paket auszuführen. Wir können es jedoch auch versuchen, indem wir eine composer update
-Datei im Stammverzeichnis des Projekts erstellen: index.php
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码Wir haben den Autoloader des Komponisten verwendet, der weiß, wie die Dateien unseres Pakets geladen werden. Damit der Komponist versteht, wie wir unsere Dateien finden, müssen wir
: composer install
ausführen
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }Sie können den Befehl
auch ausführen, nachdem der Namespace zu composer.json
hinzugefügt wird, um den Autoloader des Komponisten zu aktualisieren. dump-autoload
aus, ermöglicht es uns, unsere Pakete schnell zu verwenden. Wir können jedoch auch unseren Code verwenden, indem wir eine Testsuite erstellen. Lassen Sie uns darüber nachdenken, wie man es eingerichtet hat! index.php
Das Paket
Composer enthält zwei Anforderungen an: Das -Teil enthält die für das Paket erforderlichen Pakete, und das require
-Teil enthält die für den Test erforderlichen Pakete. Bisher haben wir keine require-dev
Pakete, die passieren können, wenn Sie keine anderen Paketabhängigkeiten benötigen. require
git remote add origin git@github.com:laravelnews/example-package.gitTipp: Ich empfehle, die Paketsortierung mit den folgenden Konfigurationsoptionen in
zu konfigurieren, um die Abhängigkeiten organisiert zu halten: composer.json
$ mkdir src/ $ touch src/Api.phpNach dem Installieren von Schädling und Spott können wir Schädlinge durch das
-Flag initialisieren. Nach dem Erstellen der Datei können wir --init
ausführen, um unseren Code zu testen: pest
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {}, "autoload": { "psr-4": { "LaravelNews\Feed\": "src/" } } }Sie können die Tests des Pakets so organisieren, wie Sie es möchten, und ich empfehle Ihnen, die Schädlingsbekämpfung zu lesen, um alle Details zum Einrichten von Schädlingen zu finden.
Erstellen wir als nächstes eine einfache Klasse, mit der wir Pakettests demonstrieren können. Diese Klasse wird die neuesten Artikel aus den Laravel News JSON -Feed erhalten und zu den neuesten Artikeln zurückkehren.
Wir haben diese fiktive Klasse
benannt und mit dem folgenden Inhalt der Datei NewsChecker
hinzugefügt: 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); } }Beachten Sie, dass die
Klasse als Abhängigkeit dauert und wir sie in unseren Tests verspotten. Api
und fügen den folgenden Test hinzu, um die tests/Feature/NewsCheckerTest.php
-Methode zu überprüfen: latestArticle()
$ mkdir example-package $ cd ./example-package $ git init $ echo "/vendor/" >> .gitignore $ composer init $ git add . $ git commit -m"第一次提交" # 稍后您可以添加远程仓库并推送源代码
Sie können diese Tests ausführen und überprüfen, ob der Code durch Ausführen von vendor/bin/pest
gültig ist. Sie können die Beispieltests löschen, die nach dem Ausführen pest --init
wie Sie möchten.
Wir haben viele Dinge abgedeckt, von der Initialisierung von Git -Repositorys, der Konfiguration von PHP -Paketen mit composer.json
, dem Hinzufügen von Quellcode und dem Testen und dem Ausführen von Schädlingen. Von hier aus können Sie Ihr Paket auf Packagist posten!
Ich empfehle Ihnen, sich anzumelden und die Dokumentation auf Packagist.org zu lesen, in der Sie eine neue Version des Pakets veröffentlichen. Der Prozess der Aktualisierung von Paketversionen auf Packagist kann automatisiert werden. Wenn Sie eine neue Version eines Pakets markieren, werden sie automatisch auf Packagist.org angezeigt.
Wir haben Schritt für Schritt über das Erstellen von Paketen von Grund auf gelernt. Wenn Sie jedoch GitHub verwenden, kann das Erstellen eines Vorlagen -Repositorys für Ihre Organisation oder persönliche Projekte schneller durchgeführt werden! Es gibt einige Community-Stellar-Paket-Frameworks, die als Ausgangspunkt für Ihr nächstes Composer-Paket verwendet werden können:
{ "name": "laravelnews/feeds", "description": "获取Laravel-News.com的文章", "type": "library", "require": {} }
Das obige ist der detaillierte Inhalt vonSo erstellen Sie Ihr erstes PHP -Paket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!