In diesem Artikel wird gezeigt, wie ein eigenes PHP Composer Packet unter zusätzlicher Verwendung von PHPUnit erstellt werden kann. Anschließend wird gezeigt, wie das Paket sowohl öffentlich mit Packagist, als auch für private Verwendung mit GitLab verteilt werden kann. Diese Anleitung wurde erstellt, um PHP-Entwicklern dabei zu helfen, ihren Arbeitsablauf zu optimieren und die Wiederverwendbarkeit von Code zu verbessern, indem sie ihre eigenen Pakete erstellen und teilen.

Um einen optimalen Arbeitsablauf und eine effiziente Vorgehensweise zu erlangen, ist es oft nützlich, Code-Teile in eine wiederverwendbare Bibliothek auszulagern. Ein gängiges System für PHP ist hierbei composer. In diesem Artikel wird gezeigt, wie ein eigenes composer Paket erstellt werden kann. Es wird gezeigt, wie dieses sowohl auf Packagist als auch in einer selbst-gehosteten GitLab Umgebung verteilt werden kann.

Voraussetzungen

  • PHP
  • Composer (Hier finden sich Details zur Installation)
  • Git und ein (neues) Git Repository für das neue Paket

Schritt 1: Projekt initialisieren

Zuerst wird das neue Paket konfiguriert. Wir werden ein einfaches Hello World Paket zur Demonstration erstellen.

Shell

Nachdem composer init eingegeben wurde, werden einige Informationen abgefragt:

Shell

Anschließend installieren wir PHPUnit für das Paket mithilfe des folgenden Befehles:

Shell

Danach sollte die Datei composer.json in etwa wie folgt aussehen:

JSON
composer.json

Mehr Details wie das composer-Paket konfiguriert werden kann, findet sich hier: https://getcomposer.org/doc/04-schema.md

Schritt 2: Beispiel PHP-Klasse erstellen

Für unser Beispiel, erstellen wir eine einfache Klasse HelloWorld mit einer Methode sayHello()

PHP
src/HelloWorld.php

Schritt 3: Erstellen des Unit-Tests

Um die Funktionalität unseres Codes zu testen, schreiben wir eine Testfall. Wird der Code in Zukunft modifiziert, wird jedesmal gegen diesen Testfall abgeprüft. Dadurch kann garantiert werden, dass die Klasse genau die Funktionalität erfüllt, die entsprechend der Anforderungen in den Testfällen abgedeckt worden idz.

In unserem Fall ergibt sich folgender einfache Testfall zur Veranschaulichung:

PHP
tests/HelloWorldTest.php

Um PHPUnit zu verwenden, können entweder beim Aufruf Befehlszeilenargumente mitübergeben werden, oder die Einstellungen werden über eine Konfigurationsdatei festgelegt:

XML
phpunit.xml

Mehr Informationen über die Konfigurationsmöglichkeiten finden sich in der PHPUnit Dokumentation: https://docs.phpunit.de/en/10.0/

Anschließend können wir die Testfälle ausführen:

Shell

Sofern alles korrekt aufgesetzt worden ist, sollte die Ausgabe ähnlich wie nachfolgend sein – alle Tests erfolgreich abgeschlossen:

Shell

Schritt 4a: Verteilung des Paketes mit GitLab

Soll ein composer-Paket verwendet werden, ohne dass der Code veröffentlicht werden soll, kann dies beispielsweise mit einem GitLab-Repository erfolgen. Hinweis: Aktuell muss dass Projekt in einer Gruppe in GitLab sein, um mit nachfolgender Vorgehensweise verwendet werden zu können! Um das Paket zu testen und bei Erfolg zu Veröffentlichen, erstellen wir folgendes CI-Skript:

YAML
.gitlab-ci.yml

Mit diesem Skript wird bei jedem Commit die Testsuite ausgeführt und sofern diese erfolgreich abgeschlossen worden ist wird das Paket (privat) veröffentlicht.

Um eine konkrete Version festzulegen, kann ein Tag erstellt werden (Für mehr Informationen zur semantischen Versionierung, siehe https://www.philipp-doblhofer.at/blog/automatischer-changelog-und-versionierung-mit-git/)

Shell

Wenn die Paket-Registry in GitLAb aktiviert ist, können hier die erstellten Pakete angezeigt werden:

Um das Paket in einem anderen Projekt zu verwenden, muss folgendes durchgeführt werden:

Zuerst muss ein Access Token erstellt werden, und diese bei composer hinterlegt werden (Den Access Token geheim halten!):

Shell

Anschließend muss das Repository in der composer.json Datei hinterlegt werden (Achtung, dies ist nicht die Datei von vorhin, sondern die des neuen Projektes, dass das Paket verwenden soll!)

JSON

Schritt 4b: Paket mit Packagist veröffentlichen

Um das Paket öffentlich zur Verfügung zu stellen, muss lediglich ein Account bei packagist.org erstellt werden. Anschließend kann über „Submit“ und der URL des Repositories das Paket verteilt werden:

Schritt 5: Das Paket verwenden

Wir können nun im neuen Projekt das Paket mit folgendem Befehl einbinden:

Shell

Anschließend kann es einfach verwendet werden:

PHP
src/index.php
Shell

Ein Demo-Repository für das Beispiel-Paket findet sich unter https://gitlab.com/philipp.doblhofer/helloworld

Das Packagist-Paket findet sich unter https://packagist.org/packages/doblhofer/helloworld

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert