Zwei Welten in einer Sprache: Warum ist das wichtig?
\nWenn wir über PHP sprechen, kommt einem sofort der klassische objektorientierte Ansatz (OOP) in den Sinn. Klassen, Vererbung, Kapselung – das ist die Basis, die in allen Kursen gelehrt wird. Aber es gibt auch eine andere Seite der Medaille – den funktionalen Ansatz. Und wissen Sie was? PHP kann beides, und das sehr gut.
\nIn diesem Artikel werden wir nicht darüber streiten, was besser ist. Wir werden verstehen, wann und welcher Ansatz verwendet werden sollte, damit Ihr Code nicht nur schön, sondern auch schnell ist. Wenn Sie in PHP schreiben und über das "es funktioniert einfach" hinausgehen wollen, sind Sie hier richtig.
\n\nObjektorientiertes PHP: Ein Klassiker, der nie veraltet
\nOOP in PHP geht um Struktur und Wiederverwendung. Sie erstellen Klassen, die die Entitäten Ihrer Anwendung beschreiben: Benutzer, Bestellung, Produkt. Jede Klasse ist für ihren eigenen Verantwortungsbereich zuständig.
\n\nBeispiel: Arbeiten mit einem Benutzer mittels OOP
\nSchauen wir uns ein typisches Beispiel an. Angenommen, wir müssen einen Benutzer erstellen und ihm eine Willkommens-E-Mail senden.
\n<?php\nclass User {\n private string $name;\n private string $email;\n\n public function __construct(string $name, string $email) {\n $this->name = $name;\n $this->email = $email;\n }\n\n public function sendWelcomeEmail(): void {\n $subject = "Willkommen, {$this->name}!";\n $message = "Hallo, {$this->name}. Wir freuen uns, Sie auf unserer Website zu sehen.";\n mail($this->email, $subject, $message);\n }\n\n public function getName(): string {\n return $this->name;\n }\n}\n\n$user = new User("Ivan", "ivan@example.com");\n$user->sendWelcomeEmail();\necho "E-Mail gesendet an Benutzer: " . $user->getName();\n?>\nHier ist alles logisch: Die Daten (Name, E-Mail) und die Methoden (E-Mail-Versand) befinden sich an einem Ort. Das ist praktisch, wenn Sie viele verschiedene Operationen mit einer Entität haben.
\n\nVorteile von OOP in PHP
\n- \n
- Lesbarkeit: Der Code ist in logische Blöcke unterteilt, die gewünschte Methode ist leicht zu finden. \n
- Vererbung: Sie können eine Basisklasse erstellen und diese erweitern. \n
- Kapselung: Daten sind vor versehentlichen Änderungen geschützt (private/protected). \n
- Polymorphismus: Eine Schnittstelle – verschiedene Implementierungen. \n
Nachteile von OOP
\n- \n
- Redundanz: Für eine einfache Aufgabe (z. B. das Formatieren eines Strings) eine Klasse zu schreiben, ist übertrieben. \n
- Zustand: Objekte speichern einen Zustand, was zu Fehlern führen kann, wenn Mutationen nicht überwacht werden. \n
- Speicher: Jedes Objekt benötigt mehr Speicher als eine einfache Funktion. \n
Funktionales PHP: Minimalismus und Reinheit
\nFunktionale Programmierung in PHP ist nicht nur "eine Funktion schreiben". Es ist eine Philosophie, bei der Funktionen die Hauptakteure sind. Sie haben keine Nebenwirkungen, ändern keinen globalen Zustand und geben immer ein vorhersagbares Ergebnis zurück.
\n\nBeispiel: Dieselbe Aufgabe, aber funktional
\nLösen wir dieselbe Aufgabe – das Erstellen eines Benutzers und das Senden einer E-Mail – aber ohne Klassen.
\n<?php\nfunction createUser(string $name, string $email): array {\n return ['name' => $name, 'email' => $email];\n}\n\nfunction sendWelcomeEmail(array $user): void {\n $subject = "Willkommen, {$user['name']}!";\n $message = "Hallo, {$user['name']}. Wir freuen uns, Sie auf unserer Website zu sehen.";\n mail($user['email'], $subject, $message);\n}\n\nfunction getUserName(array $user): string {\n return $user['name'];\n}\n\n$user = createUser("Ivan", "ivan@example.com");\nsendWelcomeEmail($user);\necho "E-Mail gesendet an Benutzer: " . getUserName($user);\n?>\nSieht einfacher aus? Ja. Aber hier gibt es keine Kapselung – die Daten sind nur ein Array. Dafür führt jede Funktion nur eine Aktion aus und weiß nichts über die "Außenwelt".
\n\n