Architekturmuster in PHP: Vom Chaos zum Clean Code

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

Hört auf, "Spaghetti" zu schreiben: Warum Architekturmuster in PHP ein Must-have sind

\n\n

Haben Sie jemals ein altes PHP-Projekt geöffnet und einen Schauer über den Rücken laufen gespürt? Wenn in einer einzigen Datei index.php SQL-Abfragen, HTML-Markup, Geschäftslogik und Gebete an die alten Götter vermischt sind? Wenn ja – dann sind Sie auf das Fehlen einer Architektur gestoßen. Oder, noch schlimmer, auf architektonisches Chaos.

\n\n

Heute sprechen wir darüber, wie Architekturmuster in PHP Ihren Code von einem Haufen Ziegelsteine in ein stabiles Gebäude verwandeln. Das ist keine Theorie für Senioren mit 10 Jahren Erfahrung. Es sind Werkzeuge, die Ihren Schlaf und Ihr Projektbudget retten. Wir analysieren 4 Schlüsselmuster: MVC, Active Record, Repository und Dependency Injection. Los geht's!

\n\n

MVC (Model-View-Controller): Das Fundament jedes Frameworks

\n\n

Wenn Sie mit Laravel, Symfony oder Yii2 gearbeitet haben – haben Sie bereits MVC gesehen. Es ist nicht nur eine Abkürzung, sondern eine Möglichkeit, den Code in drei Verantwortungsbereiche aufzuteilen:

\n\n
    \n
  • Model – Daten und Geschäftslogik (Datenbankarbeit, Validierung).
  • \n
  • View – Darstellung (HTML, Templates).
  • \n
  • Controller – Anfrageverarbeitung (Verbindungsglied).
  • \n
\n\n

So sieht es in reinem PHP (ohne Framework) aus:

\n\n
<?php\n// UserController.php\nclass UserController {\n    public function show(int $id): void {\n        $userModel = new UserModel();\n        $user = $userModel->findById($id); // Model\n        \n        // View\n        include 'views/user_profile.php';\n    }\n}\n\n// UserModel.php\nclass UserModel {\n    public function findById(int $id): ?array {\n        $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");\n        $stmt->execute([$id]);\n        return $stmt->fetch() ?: null;\n    }\n}\n\n// views/user_profile.php\n<h1><?= htmlspecialchars($user['name']) ?></h1>
\n\n

Wann anwenden: Immer, wenn Sie mehr als 2 Seiten haben. MVC ist die Basis. Es sorgt für Trennung der Logik, vereinfacht Tests und Wartung.

\n\n

Lifehack: Schreiben Sie kein SQL direkt im View. Das zerstört den ganzen Sinn des Musters. Verwenden Sie vorbereitete Templates (Twig, Blade) – diese escapen die Ausgabe automatisch und schützen vor XSS.

\n\n

Active Record: Einfachheit, die man mit Leistung bezahlt

\n\n

Active Record – das ist, wenn ein Objekt gleichzeitig eine Zeile in der Datenbank repräsentiert und Methoden zur Arbeit mit ihr enthält. Klassiker sind Eloquent in Laravel oder ActiveRecord in Yii2.

\n\n

Beispiel in reinem PHP:

\n\n
<?php\nclass User extends ActiveRecord {\n    protected string $table = 'users';\n    \n    public static function findByName(string $name): ?self {\n        return self::query()\n            ->where('name', $name)\n            ->first();\n    }\n}\n\n// Verwendung\n$user = new User();\n$user->name = 'Ivan';\n$user->email = 'ivan@example.com';\n$user->save(); // INSERT in die DB\n\n$admin = User::findByName('Admin');\n$admin->role = 'superadmin';\n$admin->update();
\n\n

Vorteile:

\n
    \n
  • Minimaler Code für CRUD-Operationen.
  • \n
  • Intuitiv für Anfänger verständlich.
  • \n
\n\n

Nachteile:

\n
    \n
  • Verstößt gegen das Single Responsibility Principle (ein Objekt macht alles).
  • \n
  • Schwer zu testen – das Objekt ist fest an die Datenbank gebunden.
  • \n
  • Skaliert schlecht für komplexe Logik.
  • \n
\n\n

Fazit: Active Record ist eine ausgezeichnete Wahl für Prototypen, kleine Projekte und Admin-Bereiche. Aber für Enterprise-Anwendungen sollte man eher in Richtung Repository schauen.

\n\n

Repository: Abstraktion über dem Datenspeicher

\n\n

Repository – das ist eine Zwischenschicht zwischen der Geschäftslogik und der Datenquelle (DB, API, Dateien). Sie sagen: "Gib mir den Benutzer m

Blogs

Buchempfehlungen