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 EGPHP
Eine 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 ab
Auf 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 ab

Im 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.

PHP-Frameworks im Vergleich
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);
Die mysql_-Funktionen wurden in PHP 7 entfernt. Diese eine Änderung bringt die Seite auf aktuellem PHP zum Laufen und schließt zugleich eine SQL-Injection-Lücke.
  1. Lesen und zum Laufen bringen

    Eine Kopie der Anwendung, die auf einem aktuellen Server läuft, und eine schriftliche Liste dessen, was nicht funktioniert.

  2. 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.

  3. PHP schrittweise aktualisiert

    Eine Version nach der anderen, mit Rector für die mechanischen Änderungen und PHPStan, um zu finden, was dabei übersehen wurde.

  4. Sicherheit zuerst

    Prepared Statements, maskierte Ausgaben, neu gehashte Passwörter sowie abgesicherte Sessions und Uploads.

  5. 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/orders Neue Anwendung Umgezogen
  • /account Neue Anwendung Umgezogen
  • /checkout Neue Anwendung Im Test
  • /reports Alte Anwendung Wartend
  • /admin Alte Anwendung Wartend
Eine Beispielmigration, zur Hälfte abgeschlossen.

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.