Erfahren Sie, wie Sie Ihre PHP-Pakete mit Packagist verteilen
Sie haben ein wunderschönes PHP-Paket entwickelt, in das Sie Ihr Herz und Ihre Seele gesteckt haben und auf das Sie stolz sind. Jetzt ist es Zeit für die Verteilung, und ein wichtiger Teil besteht darin, sicherzustellen, dass Sie anderen den einfachsten Weg zum Herunterladen und Verwenden Ihres Pakets bieten. Aber wie?
Zum Glück gibt es dafür Packagist ein kostenloses De-facto-Repository für alle PHP-Paketabhängigkeiten. Erfahren Sie, wie Sie Ihr PHP-Paket in Packagist auflisten und es anderen ermöglichen, es mit einem Befehl herunterzuladen und zu installieren.
Strukturieren Sie Ihr Paket richtig
Vor der Verteilung muss Ihr Paket ordnungsgemäß strukturiert sein und Namespaces verwenden. Entscheiden Sie sich für einen Root-Namespace für Ihr Paket. Dies kann alles sein, was Sie möchten, aber im Allgemeinen wird empfohlen, Author PackageName zu verwenden .
Beispielsweise würde der Namespace JSmith BlogPoster andere darüber informieren, dass der Entwickler des Pakets den Namen Jsmith trägt, und dies ist das Paket mit dem Namen BlogPoster .
Wenn der Root-Namespace festgelegt ist, erstellen Sie ein Verzeichnis / src / in Ihrem Projekt und verschieben Sie alle PHP-Dateien in dieses Verzeichnis. Jede Datei muss oben die richtige Deklaration haben, daher müssen alle PHP-Dateien im Verzeichnis / src / beginnen:
<?php
namespace JSmithBlogPoster;
Die Namespace-Deklaration ist relativ zur Verzeichnisstruktur. Wenn Sie beispielsweise eine Datei unter /src/Images/Uploader.php haben, haben Sie oben in der Datei Folgendes:
<?php
namespace JSmithBlogPosterImages;
class Uploader
{
}
Stellen Sie zuletzt sicher, dass die Klassendeklaration aller PHP-Dateien mit dem Dateinamen übereinstimmt, wie das obige Beispiel zeigt. Die Datei Uploader.php hat den Klassennamen Uploader .
Registrieren Sie ein Packagist-Konto
Wenn Sie noch keinen haben, erstellen Sie schnell und kostenlos ein Packagist-Konto . Obwohl dies nicht erforderlich ist, ist es üblich, sich mit demselben Benutzernamen wie im Root-Namespace zu registrieren, für den Sie sich im obigen Abschnitt entschieden haben. Wenn dieser Benutzername nicht verfügbar ist, wählen Sie etwas Ähnliches.
Sie müssen noch nichts mit dem Packagist-Konto tun, aber es ist nützlich, es bereit zu halten.
Erstellen Sie die Datei composer.json
Öffnen Sie einen Texteditor und erstellen Sie im Stammverzeichnis Ihres Projekts eine Datei composer.json mit den folgenden Inhalten als Beispiel:
{
"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/"
}
}
}
Es sind nur zwei wichtige Aspekte der obigen Datei zu beachten.
Zunächst ist der Name Element an der Spitze. Dies müssen zwei Zeichenfolgen sein, die durch einen Schrägstrich getrennt sind. Die erste ist Ihr Packagist-Benutzername und die zweite der gewünschte Name des Pakets. Unter Verwendung des obigen Beispiel die Packagist Benutzername ist jsmith, und der Paketname ist blogposter.
Zweitens sehen Sie unten im Abschnitt zum automatischen Laden die folgende Zeile:
"JSmithBlogPoster": "src/"
Ändern Sie diese Zeile so, dass der zuvor festgelegte Root-Namespace auf das Verzeichnis / src / verweist. Wenn Ihr Paket von einer anderen Person installiert wird, ordnet Composer Ihren Root-Namespace automatisch dem Unterverzeichnis zu, in dem Ihr Paket installiert wurde.
Laden Sie Ihr Paket auf Github hoch
Sie müssen Ihr PHP-Paket in ein Github-Repository hochladen, da dies die Hauptintegrationsmethode ist, die Packagist verwendet. Wenn Sie noch nicht mit dem Erstellen und Veröffentlichen in einem Github-Repository vertraut sind, finden Sie eine hervorragende Schritt-für-Schritt-Anleitung unter Erstellen Ihres ersten Repositorys auf GitHub .
Stellen Sie sicher, dass Sie Ihr gesamtes PHP-Paket einschließlich aller Dateien in / src / und der Datei composer.json hochladen. Wenn Sie einfach das gesamte Projektverzeichnis auf GitHub hochladen möchten, öffnen Sie ein Terminal in Ihrem Projektverzeichnis und führen Sie Folgendes aus:
git add ./*
git commit -m "Initial commit"
git push -u origin master
Sie müssen dem GitHub-Repository auch ein Tag hinzufügen, da Packagist mithilfe von Tags die Veröffentlichungen und Versionsnummern Ihrer Pakete verfolgt. Um das aktuelle Repository als v0.1 zu markieren, führen Sie die folgenden Befehle aus:
git tag 0.1
git push --tags
Fügen Sie eine PHP-Liste auf Packagist hinzu
Alles ist jetzt vorhanden, sodass Sie mit einem Lächeln Ihr PHP-Paket zur sofortigen Auflistung bei Packagist einreichen können. Besuchen Sie die Seite " Paket senden" und geben Sie die URL zu Ihrem GitHub-Repository ein.
https://github.com/jsmith/blogposter.git
Klicken Sie auf die Schaltfläche Senden senden, und Packagist lädt die Datei composer.json aus Ihrem Repository sowie alle verfügbaren Tags / Releases und andere Informationen herunter.
Auf der nächsten Seite wird bestätigt, dass Sie das Paket veröffentlichen möchten. Nach der Bestätigung können Sie Ihre neue Packagist-Liste unter folgender URL anzeigen:
https://packagist.org/packages/jsmith/blogposter
Installieren Sie Ihr Paket mit Composer
Probieren Sie es aus und installieren Sie Ihr PHP-Paket mit Composer. Wenn Sie Composer noch nicht installiert haben, können Sie es mit dem folgenden Befehl installieren:
sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Erstellen Sie ein neues Verzeichnis und führen Sie darin den folgenden Befehl aus:
composer require jsmith/blogposter
Composer wird seine Magie entfalten und Sie werden feststellen, dass ein neues / vendor / -Unterverzeichnis angezeigt wird. Wenn Sie hineinschauen, sehen Sie Ihr PHP-Paket!
Probieren Sie es aus und laden Sie Ihr PHP-Paket. Wenn im obigen Beispiel eine Datei a /src/Blogger.php im Paket enthalten wäre, wäre ein schnelles Testskript zum Laden der Datei:
<?php
use JSmithBlogPosterBlogger;
// Load composer dependences
require("./vendor/autoload.php");
// Get blogger
$client = new Blogger();
echo "Got a " . $client::class . "
";
Gehen Sie vorwärts und teilen Sie mit der Welt
Sie haben jetzt gelernt, wie einfach es ist, Ihr PHP-Paket entsprechend zu strukturieren und es auf Packagist aufzulisten, sodass jeder auf der Welt Ihr Paket mit einem einzigen Befehl sofort herunterladen und in sein Projekt aufnehmen kann.
Herzlichen Glückwunsch, Sie haben jetzt Ihr PHP-Paket für den Hauptvertriebskanal innerhalb des PHP-Ökosystems geöffnet. Gehen Sie vorwärts und teilen Sie Ihre Kreativität und harte Arbeit mit der Welt.