Monorepository mit PHP: Code-Organisation für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung



Die Entwicklung mit PHP beginnt oft mit einer einzigen Datei index.php, aber mit dem Wachstum des Projekts entsteht die Notwendigkeit, den Code zu strukturieren. Viele Entwickler stehen vor dem Dilemma: alles in einem Repository (Monorepository) zu speichern oder in viele kleine Repositories (Multirepository) aufzuteilen. In diesem Artikel werden wir das Konzept des Monorepositorys für PHP-Projekte erläutern, zeigen, wie man Code für Anfänger organisiert, und praktische Beispiele liefern.



Ein Monorepository (Monorepo) ist ein Ansatz, bei dem der Code mehrerer Projekte, Bibliotheken oder Komponenten in einem einzigen Repository eines Versionskontrollsystems (Git) gespeichert wird. Im Kontext von PHP bedeutet dies, dass Ihre Hauptwebsite, API, Pakete und Hilfsprogramme sich in einem Ordner befinden. Dies vereinfacht die Abhängigkeitsverwaltung, das Refactoring und die Bereitstellung.



In diesem Artikel erfahren Sie:

  • Was ein Monorepository ist und warum es benötigt wird
  • Wie man eine Ordnerstruktur für PHP organisiert
  • Wie man Composer für die Arbeit mit einem Monorepository einrichtet
  • Beispiele für eine reale Code-Organisation


Vorteile eines Monorepositorys für PHP



Viele PHP-Anfänger glauben, dass ein Monorepository eine "Code-Müllhalde" sei. Tatsächlich ist es bei richtiger Organisation ein mächtiges Werkzeug. Hier sind die wichtigsten Vorteile:



  • Einfache Navigation: Alle Projektkomponenten befinden sich an einem Ort. Es ist nicht nötig, zwischen Repositories zu wechseln.
  • Einheitliche Abhängigkeitsversion: Sie verwenden eine einzige Datei composer.json zur Paketverwaltung, was Versionskonflikte ausschließt.
  • Atomare Commits: Änderungen an API, Frontend und Bibliotheken können in einem einzigen Commit vorgenommen werden, was das Rückgängigmachen vereinfacht.
  • Vereinfachtes Testen: Integrationstests laufen schneller, da alle Komponenten lokal verfügbar sind.
  • Einheitliches CI/CD: Eine einzige Build-Pipeline für das gesamte Projekt.


Ein Monorepository ist jedoch nicht für jeden geeignet. Wenn Ihr Team groß ist (mehr als 20 Personen) oder sich die Projekte technologisch stark unterscheiden, sollten Sie ein Multirepository in Betracht ziehen. Für Anfänger und mittelgroße Projekte ist es die ideale Wahl.



Struktur eines Monorepositorys: Grundlegendes Schema



Lassen Sie uns eine typische Struktur eines PHP-Monorepositorys erstellen. Angenommen, wir haben eine Webanwendung mit einer API und mehreren Bibliotheken. Hier ist die empfohlene Ordnerhierarchie:



my-php-monorepo/├── apps/│   ├── web/               # Hauptwebsite (Laravel, Symfony oder reines PHP)│   │   ├── public/│   │   ├── src/│   │   └── config/│   └── api/               # API-Server│       ├── public/│       ├── src/│       └── routes/├── packages/              # Interne Bibliotheken und Pakete│   ├── core/              # Systemkern (Basisklassen)│   │   ├── src/│   │   └── composer.json│   ├── database/          # Datenbankarbeit (Migrationen, Modelle)│   │   ├── src/│   │   └── composer.json│   └── utils/             # Hilfsprogramme (Validierung, Logging)│       ├── src/│       └── composer.json├── tests/                 # Globale Tests├── docker/                # Docker-Konfigurationen├── composer.json          # Root-Composer├── composer.lock├── .gitignore└── README.md


Erläuterung:

  • apps/ — enthält ausführbare Anwendungen (Websites, APIs, Konsolenskripte). Jede Anwendung hat ihren eigenen Einstiegspunkt (public/index.php).
  • packages/ — interne Pakete, die Sie entwickeln. Sie werden über composer.json mit path-Repositories eingebunden.
  • tests/ — Root-Tests (z. B. Integrationstests, die die Interaktion zwischen Paketen prüfen).
  • docker/ — Dateien für Docker (Dockerfile, docker-compose.yml).


Einrichtung von Co

Blogs

Buchempfehlungen