Heim > Backend-Entwicklung > PHP-Tutorial > So erstellen Sie Ihr erstes PHP -Paket

So erstellen Sie Ihr erstes PHP -Paket

Karen Carpenter
Freigeben: 2025-03-06 01:38:08
Original
587 Leute haben es durchsucht

How to  Build Your First PHP Package

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.

Start


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:

  • Initialisieren Sie das Git -Repository
  • erstellen und konfigurieren Sie composer.json Datei
  • Abhängigkeiten installieren
  • automatisches Laden
  • einstellen

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"第一次提交"
# 稍后您可以添加远程仓库并推送源代码
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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": {}
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

automatisches Laden

einstellen
Nach dem Erstellen des Basis

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
Nach dem Login kopieren
Nach dem Login kopieren
Öffnen Sie als nächstes die Datei

und verwenden Sie die Taste composer.json, um den Autoloader zu konfigurieren: "autoload"

Die Eigenschaften in der
{
    "name": "laravelnews/feeds",
    "description": "获取Laravel-News.com的文章",
    "type": "library",
    "require": {},
    "autoload": {
        "psr-4": {
            "LaravelNews\Feed\": "src/"
        }
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
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"第一次提交"
# 稍后您可以添加远程仓库并推送源代码
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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": {}
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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

Führen Sie die Datei

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

Pakettest- und Entwicklungsabhängigkeiten


Ich empfehle, Tests für jedes Projekt zu schreiben, an dem Sie beteiligt sind, und ich möchte so früh wie möglich Tests einrichten. Das häufigste Test -Framework beim Erstellen von PHP -Paketen ist Phpunit. Meine Lieblingsauswahl in letzter Zeit ist Pest PHP, und ich denke, Sie werden es lieben, wie einfach es zu errichten ist!

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

Ich bezweifle, dass Sie Ihr eigenes Test -Framework nicht von Grund auf neu schreiben möchten. Daher sind wir dabei, unsere erste Entwicklungsabhängigkeit zu installieren. Wir möchten auch nicht immer Anfragen an JSON-Endpunkte in Echtzeit stellen, daher werden wir auch eine Scheinbibliothek (Spott) installieren, um HTTP-Anrufe zu simulieren:

git remote add origin git@github.com:laravelnews/example-package.git
Nach dem Login kopieren
Nach dem Login kopieren
Tipp: 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.php
Nach dem Login kopieren
Nach dem Login kopieren
Nach 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/"
        }
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
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);
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Beachten Sie, dass die

Klasse als Abhängigkeit dauert und wir sie in unseren Tests verspotten. Api

Als nächstes erstellen wir diese Datei in der Datei

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"第一次提交"
# 稍后您可以添加远程仓库并推送源代码
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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!

Erfahren Sie mehr


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": {}
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage