PHP-Frameworks
Jedes PHP-Framework hat eine Aufgabe, die es am besten kann.
Wir entwickeln, retten und hosten Anwendungen in allen davon – und in reinem PHP, das nie ein Framework hatte – mit einem Team, das seit fünfundzwanzig Jahren PHP schreibt.
Welches Framework zu Ihrem Projekt passt
Beantworten Sie zwei Fragen. Jeder Pfad endet dort, wo wir anfangen würden – und sagt, wann wir etwas anderes wählen würden.
Womit starten Sie?
Ein neues Projekt
Was ist am wichtigsten?
Ein großes System, an dem mehrere Teams jahrelang arbeiten
Hier würden wir anfangen
Symfony
Explizite Konfiguration, ein Dependency-Injection-Container, Releases mit Langzeitsupport und Doctrine für die Daten. Die Struktur hält auch dann noch, wenn der fünfte Entwickler dazukommt.
Ziehen Sie auch Laminas in Betracht, wenn im Unternehmen bereits Code auf Zend Framework läuft.
Ein Produkt, das bald fertig sein muss, mit einem kleinen Team
Hier würden wir anfangen
Laravel
Authentifizierung, Queues, Mail, Scheduling und ein ausdrucksstarkes ORM direkt mitgeliefert – mit einer einheitlichen Konvention für alles.
Laravel bei EGPHPEine API oder ein kleiner Service mit einer einzigen Aufgabe
Hier würden wir anfangen
Slim
Routing, Middleware und standardisierte PSR-7-Requests – und nichts, worum Sie nicht gebeten haben. Datenbankschicht und Container wählen Sie selbst.
Wenn die API zu einem vollständigen Produkt wachsen soll, ersparen Laravel oder Symfony später einen Neubau.
Eine kleine Anwendung auf einem bescheidenen Server
Hier würden wir anfangen
CodeIgniter
Schlank, wenig Konfiguration und eine klare Dokumentation. Läuft gut, wo die Ressourcen knapp sind.
Viele Datenmasken, schnell aus der Datenbank erzeugt
Hier würden wir anfangen
Yii · CakePHP
Yii erzeugt Models und CRUD-Masken mit Gii; CakePHP „backt“ sie aus seinen Konventionen. Beide machen aus einem Schema schnell funktionierende Masken.
Möglichst wenig Framework-Overhead bei jeder Anfrage
Hier würden wir anfangen
Phalcon
Das Framework ist eine kompilierte C-Erweiterung, daher läuft pro Anfrage sehr wenig PHP. Die Erweiterung muss auf dem Server installiert sein – auf unseren installieren wir sie.
Viele Shared-Hosting-Anbieter erlauben keine PHP-Erweiterungen. Prüfen Sie das, bevor Sie sich dafür entscheiden.
Eine bereits bestehende Anwendung
Worauf basiert sie?
Reines PHP ohne Framework oder eine sehr alte PHP-Version
Hier würden wir anfangen
Zuerst retten
Wir machen es vor allem anderen sicher und aktuell und entscheiden dann gemeinsam, ob sich ein Framework lohnt.
So läuft eine Rettung abAuf einem Framework gebaut, und es funktioniert
Hier würden wir anfangen
Beim Framework bleiben
Wir aktualisieren, sichern und erweitern es in dem Framework, in dem es geschrieben wurde. Ein Neuschreiben ist das letzte Mittel, nicht das erste.
Auf einem Framework gebaut, das Sie verlassen möchten
Hier würden wir anfangen
Schrittweise migrieren
Die alte und die neue Anwendung laufen parallel, und die Routen wechseln eine nach der anderen, während das Geschäft weiterläuft.
So läuft eine Migration abIm direkten Vergleich
Was jedes Framework ist, worin es am stärksten ist und wann wir es uns zweimal überlegen würden. Keines davon ist falsch; jedes passt zu einer anderen Aufgabe.
| Framework | Was es ist | Datenschicht | Am stärksten bei | Zweimal überlegen, wenn |
|---|---|---|---|---|
| Symfony | Full-Stack-Framework und wiederverwendbare Komponenten | Doctrine ORM | Große, langlebige Systeme, mit Langzeitsupport-Releases | Eine kleine Website diese Woche online gehen muss |
| Laravel | Full-Stack-Framework | Eloquent | Ein Produkt schnell ausliefern, mit eingebauten Queues, Authentifizierung und Mail | Sie jedes Teil explizit verdrahten möchten |
| CodeIgniter | Schlankes Full-Stack-Framework | Query Builder und einfache Models | Geringer Ressourcenbedarf auf bescheidenen Servern | Das Projekt ein großes Ökosystem an Paketen braucht |
| Yii | Full-Stack-Framework | Active Record | Datenlastige Masken, mit Gii generiert, und Caching | Ihr Team es noch nicht kennt; die Community ist kleiner |
| CakePHP | Full-Stack-Framework | CakePHP ORM | Konvention vor Konfiguration und aus dem Schema gebackener Code | Die Anwendung bei jedem Schritt gegen die Konventionen ankämpft |
| Laminas | Komponenten, MVC- und Middleware-Frameworks; der Nachfolger von Zend Framework | laminas-db oder Doctrine | Geschäftssysteme, die bereits auf Zend Framework aufbauen | Ein kleines neues Projekt schnell vorankommen will |
| Slim | Micro-Framework | Nichts eingebaut – Sie haben die Wahl | APIs und kleine Services | Die Anwendung vom ersten Tag an Sessions, Formulare und einen Admin-Bereich braucht |
| Phalcon | Full-Stack-Framework als C-Erweiterung | Phalcon ORM mit PHQL | Sehr geringer Overhead pro Anfrage | Ihr Hoster keine PHP-Erweiterungen installieren kann |
Laravel selbst baut auf mehreren Symfony-Komponenten auf, und die meisten dieser Frameworks teilen dieselben PSR-Standards – Code zwischen ihnen zu verschieben ist weniger Arbeit, als es aussieht.
Altes PHP, wieder in Form gebracht
Vor Jahren geschriebener Code verdient für viele Unternehmen noch immer Geld. Wir machen ihn sicher und aktuell, ohne ihn abzuschalten.
- $id = $_GET['id'];- $r = mysql_query("SELECT * FROM orders WHERE id = $id");- $order = mysql_fetch_assoc($r);+ $stmt = $pdo->prepare('SELECT * FROM orders WHERE id = ?');+ $stmt->execute([(int) $_GET['id']]);+ $order = $stmt->fetch(PDO::FETCH_ASSOC);
Lesen und zum Laufen bringen
Eine Kopie der Anwendung, die auf einem aktuellen Server läuft, und eine schriftliche Liste dessen, was nicht funktioniert.
Tests für das, was funktioniert
Tests, die festhalten, was die Seiten heute tun – so fällt eine Änderung, die eine davon kaputt macht, sofort auf.
PHP schrittweise aktualisiert
Eine Version nach der anderen, mit Rector für die mechanischen Änderungen und PHPStan, um zu finden, was dabei übersehen wurde.
Sicherheit zuerst
Prepared Statements, maskierte Ausgaben, neu gehashte Passwörter sowie abgesicherte Sessions und Uploads.
Dann, wenn es sich lohnt, ein Framework
Neue Funktionen entstehen in einem Framework neben dem alten Code, und alte Seiten wandern hinüber, sobald sie angefasst werden.
Wechsel zwischen Frameworks, eine Route nach der anderen
Wir halten das Geschäft nicht für eine Neuentwicklung an. Die alte und die neue Anwendung stehen hinter einem gemeinsamen Webserver, und jede Route wechselt, sobald ihr Ersatz bereit ist.
-
/api/ordersNeue Anwendung Umgezogen -
/accountNeue Anwendung Umgezogen -
/checkoutNeue Anwendung Im Test -
/reportsAlte Anwendung Wartend -
/adminAlte Anwendung Wartend
Die Umschaltung ist eine Zeile pro Route
# nginx
location /api/orders { proxy_pass http://new; }
location /account { proxy_pass http://new; }
location /checkout { proxy_pass http://new; }
location / { proxy_pass http://old; }
Eine Route, die Probleme macht, geht mit derselben einzeiligen Änderung zurück an die alte Anwendung, während wir sie reparieren.

Erzählen Sie uns, was Sie betreiben
Das Framework, die PHP-Version und das, was Ihnen daran Sorgen macht, genügen für den Anfang. Jedes Projekt erhält nach einem kurzen Gespräch ein Angebot.