Alle Leistungen

Zend Framework

Zend Framework läuft noch. Weiterentwickelt wird es seit Anfang 2020 nicht mehr.

Zend Framework ist Anfang 2020 im Laminas-Projekt aufgegangen. Seither erscheinen unter dem alten Namen keine Veröffentlichungen mehr, sämtliche Pakete sind als aufgegeben markiert und verweisen auf ihr Laminas-Gegenstück. Was das für Sie bedeutet, hängt an einer einzigen Zahl: Bei ZF2 und ZF3 ist der Weg zu Laminas weitgehend mechanisch. Bei ZF1 gibt es ihn nicht, dort geht es um Ablösung statt Migration.

ZF2 und ZF3 → LaminasZF1 schrittweise ablösenohne AusfallEinstieg ab 950 €
Was Sie bekommen
  • Einordnung: mechanische Migration oder schrittweise Ablösung
  • Bestandsaufnahme der Abhängigkeiten, samt aufgegebener Pakete
  • Reihenfolge in Schritten, die einzeln produktiv gehen
  • Umstellung im laufenden Betrieb, mit Rückweg je Schritt
  • Passende PHP-Version gleich mitgedacht, aber getrennt umgesetzt
  • Übergabe an Ihr Team, schriftlich und im Gespräch
Umfang & Zusammenarbeit

Einstieg als erster Migrationsschritt zum Festpreis, Umsetzung nach Umfang. Auch für Anwendungen ohne Dokumentation und ohne die Leute, die sie gebaut haben.

Remote aus Deutschland. Direkt mit mir, ohne Agentur dazwischen.

Die Ausgangslage

Zwei Lagen, die nichts miteinander zu tun haben.

Zend Framework 2 und 3 leben als Laminas weiter. Die Umstellung ist im Kern eine Umbenennung: Aus den Zend-Namensräumen werden Laminas-Namensräume, aus den Composer-Paketen die entsprechenden Laminas-Pakete. Dafür gibt es ein offizielles Werkzeug, das den größten Teil davon erledigt. Das ist Arbeit, aber es ist berechenbare Arbeit.

Zend Framework 1 ist ein anderer Fall. Es hat am 28. September 2016 sein Supportende erreicht, und es gibt keinen automatisierten Weg nach Laminas: Das Migrationswerkzeug deckt ausdrücklich erst Version 2 aufwärts ab. ZF1 stammt aus der Zeit vor Composer, hat ein eigenes MVC, eine eigene Datenbankschicht und Konventionen, die es später nirgends mehr gibt. Wer hier von Migration spricht, meint in Wahrheit Ablösung.

Dazu kommt fast immer ein zweites Problem: ZF1-Anwendungen hängen an alten PHP-Versionen, oft an solchen, die selbst keine Sicherheitsupdates mehr bekommen. Beides gleichzeitig anzufassen ist der zuverlässigste Weg, hinterher nicht mehr zu wissen, woran ein Fehler lag. Deshalb wird getrennt: erst der eine Schritt, dann der andere.

Kommt Ihnen etwas davon bekannt vor?
  • Die Anwendung läuft auf ZF1 und niemand traut sich, PHP anzuheben.
  • Composer meldet, dass die Zend-Pakete aufgegeben sind.
  • Es gibt eine Mischung aus ZF-Code und späteren Anbauten, ohne klare Grenze.
  • Ein Dienstleister hat einen Neubau vorgeschlagen und eine Zahl genannt, die niemand freigibt.
  • Die Suche nach Entwicklern mit ZF-Erfahrung dauert länger als das Projekt.
  • Ein Audit fragt nach einem Framework, das offiziell aufgegeben ist.

Für wen das passt

Für Unternehmen, deren Zend-Anwendung noch gebraucht wird, obwohl das Framework stehen geblieben ist.

Das Angebot richtet sich an CTOs und technische Leiter mit einer produktiven Zend-Framework-Anwendung. Das System trägt weiterhin Geschäft, doch Supportende, alte PHP-Versionen und schwindendes Wissen erhöhen mit jeder Änderung das Risiko.

01

Das System hat weiterhin einen Geschäftswert.

Eine sofortige Abschaltung ist keine Option und der Funktionsumfang kann nicht über Nacht neu gebaut werden.

02

Die Ausgangslage muss zuerst sichtbar werden.

Module, Abhängigkeiten, Tests und Betriebswege werden erfasst, bevor über Laminas, Symfony oder eine schrittweise Ablösung entschieden wird.

03

Die Migration muss in Etappen funktionieren.

Jeder Schritt soll produktiv nutzbar, testbar und bei Bedarf rückgängig zu machen sein.

Was ich mache

Was dabei passiert

01

Zuerst die Einordnung

BestandsaufnahmeComposer-AnalyseAbhängigkeitsgraph

Welche ZF-Version steckt wirklich drin, und wie sauber ist die Grenze zum eigenen Code. Das entscheidet zwischen zwei völlig verschiedenen Vorhaben. Ergebnis ist eine klare Aussage: mechanische Migration nach Laminas, oder schrittweise Ablösung, mit dem jeweiligen Aufwand.

02

ZF2 und ZF3: der Weg nach Laminas

laminas-migrationComposerkleine Commits

Das offizielle Migrationswerkzeug ersetzt Namensräume und Paketnamen im gesamten Bestand. Was danach bleibt, ist Handarbeit an den Stellen, an denen eigener Code auf Interna gesetzt hat, plus die Abhängigkeiten, die kein Laminas-Gegenstück haben. Jeder Durchlauf ein eigener Commit, einzeln überprüfbar.

03

ZF1: Ablösung statt Migration

Strangler FigAnti-Corruption-Layeranteiliger Rollout

Ohne automatisierten Weg wird ZF1 schrittweise abgelöst, nicht in einem Zug ersetzt. Eine Weiche vor der Anwendung, ein Bereich nach dem anderen auf einen gepflegten Stand, das Alte schrumpft. Jeder Schritt geht einzeln produktiv und lässt sich einzeln zurückdrehen.

04

Sicherheitsnetz vor dem ersten Eingriff

PHPUnitCharacterization TestsGolden Master

ZF-Anwendungen haben selten Tests. Vor der ersten Änderung entstehen deshalb Characterization Tests, die festhalten, was das System heute tut. Nicht vollständig, sondern dort, wo angefasst wird und wo Geld hängt.

05

Die PHP-Version, aber getrennt

PHP 8.4RectorPHPStan

Fast jede ZF1-Anwendung hängt an einer PHP-Version ohne Sicherheitsupdates. Das gehört behoben, aber als eigener Schritt mit eigenem Rückweg. Framework und Sprache gleichzeitig zu wechseln macht jeden Fehler unauffindbar.

06

Danach: wieder wartbar

CI-PrüfungenDependabotWartungsplan

Am Ende steht ein Stand, für den es Veröffentlichungen, Sicherheitsupdates und Entwickler auf dem Markt gibt. Dazu Prüfungen in der Pipeline, damit der Abstand nicht wieder wächst.

Läuft Ihre Anwendung noch auf Zend Framework?

Schicken Sie mir die Eckdaten. Sie erfahren zuerst, in welchem der beiden Fälle Sie stecken, bevor Sie etwas beauftragen.

Ablauf

Wie das abläuft

Vier Schritte, und nach dem ersten wissen Sie, ob Sie ein Migrations- oder ein Ablöseprojekt vor sich haben. Kein Schritt setzt voraus, dass Sie den nächsten beauftragen.

SCHRITT 01

Eckdaten und Zugang

ZF-Version, PHP-Version, ungefähre Größe, Testabdeckung. Ein Lesezugriff auf das Repository genügt für den Befund; produktive Zugänge braucht es erst später.

SCHRITT 02

Befund und Einordnung

Analyse des Bestands und der Abhängigkeiten. Ergebnis ist die Einordnung in einen der beiden Fälle, dazu eine Liste mit Fundstellen, Aufwand und Reihenfolge.

SCHRITT 03

Absichern und umstellen

Testnetz an den Stellen, die angefasst werden. Danach je nach Fall der Migrationslauf oder der erste abgelöste Bereich. Jeder Schritt ein Commit.

SCHRITT 04

Ausrollen und übergeben

Schrittweise in Produktion, mit Rückweg. Zum Schluss Prüfungen in der Pipeline und eine Übergabe, damit Ihr Team ab dann selbst weitermacht.

Einstieg

Erster Migrationsschritt. Ab 950 €

Startpreis. Die weitere Umsetzung wird nach Umfang angeboten, zum Festpreis, bevor sie beginnt.

Kein Gutachten, sondern ein Anfang: Sie erfahren nicht nur, in welchem der beiden Fälle Sie stecken, sondern sehen bei ZF2 und ZF3 das Ergebnis des mechanischen Migrationsschritts. Was danach offen bleibt, ist gemessen statt geschätzt.

Was Sie bekommen

  • Einordnung: mechanische Migration nach Laminas oder schrittweise Ablösung
  • Bei ZF2 und ZF3: laminas-migration in einem eigenen Zweig ausgeführt. Sie sehen, was danach wirklich offen bleibt
  • Bei ZF1: die Stellen benannt, an denen eigener Code auf Framework-Interna sitzt
  • Bestandsaufnahme der Abhängigkeiten, inklusive aufgegebener Pakete
  • Reihenfolge in Schritten, die einzeln produktiv gehen können
  • Einschätzung zu Testabdeckung, PHP-Version und nötigem Sicherheitsnetz
  • Eine Stunde Besprechung der Ergebnisse, Aufzeichnung auf Wunsch

Was Sie nicht bekommen

  • Keine vollständige Migration. Der Zweig ist ein Ausgangspunkt, kein fertiger Stand
  • Keine Behebung dessen, was nach dem mechanischen Schritt offen bleibt
  • Kein Refactoring, keine neuen Funktionen
  • Kein PHP-Upgrade, das ist ein eigenes Vorhaben mit eigener Seite
  • Keine Prüfung der Infrastruktur, dafür gibt es die AWS-Kostenanalyse
  • Keine Sicherheitsprüfung im Sinne eines Penetrationstests
  • Lesezugriff auf das Repository genügt. Der Migrationszweig entsteht daneben, Ihr Hauptzweig bleibt unangetastet
  • Der Zweig gehört Ihnen und bleibt Ihnen, auch wenn Sie sich gegen die weitere Umsetzung entscheiden
  • Preis netto, zuzüglich Umsatzsteuer
  • Ab etwa 200.000 Zeilen oder mehreren Anwendungen wird der Umfang vorher abgestimmt
  • Der Betrag wird angerechnet, wenn Sie die Umsetzung anschließend beauftragen
  • Sie sind zu nichts verpflichtet. Manche Kunden führen die Migration von dort aus selbst weiter, und das ist ein gültiges Ergebnis

Das Ergebnis

Was danach anders ist

Ein Stand, der gewartet wird

Laminas veröffentlicht weiter und liefert Sicherheitsupdates. Der Satz „unser Framework ist aufgegeben" fällt im nächsten Audit nicht mehr.

Wieder besetzbar

Entwickler mit ZF1-Erfahrung sind schwer zu finden und werden es jedes Jahr mehr. Ein gepflegter Stand macht die Stelle wieder besetzbar.

Der Weg auf aktuelles PHP ist frei

Das Framework ist in ZF-Anwendungen fast immer der Grund, warum die PHP-Version nicht steigen kann. Danach ist dieser Grund weg.

Ein Netz, das bleibt

Die Tests, die für die Umstellung entstanden sind, gehören danach Ihnen und sichern die nächste Änderung genauso ab.

Eingesetzte Technologien

Womit ich arbeite

Framework
  • Zend Framework 1, 2, 3
  • Laminas
  • Mezzio
  • laminas-migration
Sprache
  • PHP 8.2
  • PHP 8.3
  • PHP 8.4
Analyse
  • PHPStan
  • Rector
  • PHP-CS-Fixer
  • Composer Audit
Tests
  • PHPUnit
  • Xdebug
  • Characterization Tests
Pakete
  • Composer
  • Packagist
  • Dependabot
Daten
  • MySQL
  • MariaDB
  • Zend_Db
  • Doctrine
  • PDO
Laufzeit
  • Docker
  • PHP-FPM
  • Nginx
  • Apache
  • Valkey / Redis
Ausrollen
  • GitHub Actions
  • GitLab CI
  • AWS
  • Terraform

Nachweis

PHP und Zend Framework zertifiziert.

Die meisten Anbieter kennen das Ziel. Bei einem alten System entscheidet aber, ob jemand auch die Ausgangslage kennt: warum eine Stelle so geschrieben ist, wie sie geschrieben ist, und was ihre Ablösung anrichtet. Zend Technologies gibt es unter dem Namen nicht mehr, die Prüfungen von damals also auch nicht. Für die Datenbankseite kommt eine Oracle-Zertifizierung auf MySQL 5 dazu, denn dort liegen die stilleren Fallen: Zeichensätze, Sortierregeln und ein Strict Mode, der bisher Geduldetes ablehnt.

Zertifikat: Tim Rutte, Zend Certified Engineer PHP 5.3, ausgestellt von Zend Technologies
Zend Certified Engineer – PHP 5.3
Zertifikat: Tim Rutte, Zend Certified Engineer Zend Framework, ausgestellt von Zend Technologies
Zend Certified Engineer – Zend Framework
Tim Rutte, Cloud & Software Architect

Mit wem Sie es zu tun haben

Direkt mit mir als Freelancer. Keine Agentur dazwischen.

Ich bin Tim Rutte. Über 20 Jahre Softwareentwicklung, und Zend Framework habe ich zu der Zeit eingesetzt, als es aktuell war. Sie sprechen mit der Person, die Ihren Code anfasst, vom ersten Gespräch bis zur Übergabe.

  • 20+Jahre Softwareentwicklung
  • 50+erfolgreiche Projekte
  • 2003seit diesem Jahr remote im Einsatz
Mehr über mich

Häufige Fragen

Häufige Fragen zu Zend Framework und Laminas

Ist Zend Framework wirklich tot?

Es wird nicht mehr weiterentwickelt, seit das Projekt Anfang 2020 als Laminas fortgeführt wird. Eine Zahl führt dabei regelmäßig in die Irre: Das Metapaket zendframework/zendframework endete zwar im Juni 2016, aber nur weil ZF3 auf Einzelveröffentlichungen je Komponente umstellte. Die zend-Komponenten erschienen bis Ende 2019 weiter. Seit dem Übergang zu Laminas kommen keine Korrekturen mehr, auch keine sicherheitsrelevanten.

Was ist Laminas, und ist das ein Neubau?

Nein. Laminas ist die Fortführung von Zend Framework unter neuem Namen und neuer Trägerschaft. Für ZF2 und ZF3 ist die Umstellung im Kern eine Umbenennung von Namensräumen und Paketen, für die es ein offizielles Werkzeug gibt. Der eigene Code bleibt im Wesentlichen derselbe.

Gilt das auch für Zend Framework 1?

Nein, und das ist der wichtigste Unterschied auf dieser Seite. Das Migrationswerkzeug deckt ausdrücklich erst Version 2 aufwärts ab. ZF1 hat am 28. September 2016 sein Supportende erreicht und stammt architektonisch aus einer anderen Zeit. Hier führt kein Werkzeug hinüber, hier wird schrittweise abgelöst.

Was kostet das?

Der erste Migrationsschritt kostet ab 950 Euro netto und sagt Ihnen, was die Umsetzung kostet. Vorher ist jede Zahl geraten, weil zwischen den beiden Fällen Größenordnungen liegen: Eine ZF2-Anwendung kann in Tagen umgestellt sein, eine ZF1-Ablösung läuft über Monate. Die Umsetzung wird danach zum Festpreis angeboten.

Können wir gleichzeitig auf PHP 8 gehen?

Beides ist nötig, aber nicht gleichzeitig. Framework und Sprachversion zusammen zu wechseln heißt, bei einem Fehler nicht mehr zu wissen, woraus er stammt. Welcher Schritt zuerst kommt, hängt am Fall: Bei ZF2 und ZF3 meist die Migration, bei ZF1 oft ein Zwischenschritt auf eine PHP-Version, die das Alte gerade noch trägt.

Lohnt sich statt der Migration nicht ein Neubau?

Bei ZF2 und ZF3 fast nie: Der mechanische Weg nach Laminas ist um Größenordnungen billiger. Bei ZF1 ist die Frage berechtigt, und die Antwort lautet trotzdem selten Neubau in einem Zug. Der Neubau muss Verhalten nachbilden, das niemand vollständig kennt, während das alte System weiterläuft und sich verändert. Schrittweise Ablösung liefert ab dem ersten Monat Teile in Produktion.

Wir haben keine Tests. Geht das trotzdem?

Ja, das ist bei ZF-Anwendungen der Normalfall. Vor dem ersten Eingriff entsteht ein Netz aus Characterization Tests, das festhält, was das System heute tut. Es deckt die Stellen ab, die angefasst werden, und die Wege, an denen Geld hängt. Dieses Netz bleibt Ihnen danach erhalten.

Muss die Anwendung dafür angehalten werden?

Nein. Bei ZF2 und ZF3 ist die Umstellung eine Folge von Commits, die wie jede andere Änderung ausgerollt wird. Bei ZF1 läuft die Ablösung über eine Weiche vor der Anwendung: Ein Bereich nach dem anderen geht auf den neuen Stand, jeder einzeln ausrollbar und einzeln zurückdrehbar.