| Zend Framework | |
|---|---|
| Entwickler | Zend Technologies |
| Freigeben | 3. März 2006 [ 1 ] |
| Endgültige Version | 3.0.0 [ 2 ] / 28. Juni 2016 |
| Geschrieben in | PHP 7 |
| Betriebssystem | Plattformübergreifend |
| Lizenz | Neue BSD-Lizenz |
| Webseite | framework.zend.com |
| Repository | Zend Repository |
Laminas (ehemals Zend Framework oder ZF ) ist ein Open-Source - Framework für objektorientierte Webanwendungen , implementiert in PHP 7 und lizenziert unter der neuen BSD-Lizenz . [ 3 ] Das Framework besteht im Wesentlichen aus einer Sammlung professioneller PHP- basierter Pakete. [ 4 ] [ 5 ] Mithilfe von Composer als Teil des Paketverwaltungssystems bindet Laminas verschiedene Pakete ein, darunter PHPUnit zum Testen aller Pakete und Travis CI für Continuous Integration. Laminas bietet Nutzern Unterstützung für das Model-View-Controller- Architekturmuster (MVC) in Kombination mit einer Front-Controller-Lösung. [ 6 ] Die MVC-Implementierung in Laminas umfasst fünf Hauptbereiche: Router- und Dispatcher-Funktionen, die anhand der Daten einer URL entscheiden, welcher Controller ausgeführt wird , sowie Controller-Funktionen, die zusammen mit Model und View die finale Webseite entwickeln und erstellen. [ 5 ]
Am 17. April 2019 wurde bekannt gegeben [ 7 ] , dass das Framework in ein Open-Source-Projekt umgewandelt wird, das von der Linux Foundation gehostet wird und den Namen Laminas tragen soll.
Lizenz
Laminas ist unter der von der Open Source Initiative (OSI) genehmigten New BSD License lizenziert . Alle neuen Beiträge müssen mit einer Entwickler-Ursprungsbestätigung versehen sein . [ 8 ]
Das Zend Framework ist auch unter der New BSD License lizenziert. Für ZF1 mussten alle Code-Mitwirkenden eine Contributor License Agreement (CLA) unterzeichnen, die auf der CLA der Apache Software Foundation basierte. Laut Andi Gutmans von Zend wurden die Lizenz- und Mitwirkungsrichtlinien eingeführt, um Probleme mit dem geistigen Eigentum für kommerzielle ZF-Nutzer zu vermeiden. [ 9 ] ZF2 und spätere Versionen sind CLA-frei. [ 10 ]
Komponenten und Versionierung
Das Laminas-Projekt verwendet semantische Versionierung . Die Framework-Komponenten werden unabhängig versioniert und als separate Composer- Pakete veröffentlicht. Abhängigkeiten zwischen den Framework-Komponenten werden als Composer-Abhängigkeiten mithilfe semantischer Versionsbereiche deklariert.
Vor Zend Framework Version 2.5 hatten alle Komponenten dieselbe Version. Ab Zend Framework Version 2.5 wurden die Komponenten in unabhängig versionierte Pakete aufgeteilt und zendframework/zendframework in ein Composer-Metapaket umgewandelt. [ 11 ] Framework-Komponenten, die nach der Aufteilung eingeführt wurden, begannen mit Version 1.0, während bestehende Komponenten ab Version 2.5 weitergeführt wurden. Neue Komponenten wurden nicht mehr in das Metapaket aufgenommen, und das Metapaket selbst wurde nach der Veröffentlichung von Version 3.0.0 eingestellt.
Zend Framework 3 war die letzte Version vor der Einstellung der frameworkweiten Versionierung. [ 12 ] In Zend Framework 3 entsprachen die Hauptversionen einzelner Komponenten nicht mehr den Framework-Versionen, was zu Verwirrung führte. Einige Komponenten wie zend-mvc und zend-servicemanager erhielten zwar eine passende Hauptversion, andere blieben jedoch bei Version 2, während die neu eingeführten Komponenten zend-diactoros, zend-stratigility und zend-expressive die Hauptversion 1 hatten.
Das Laminas-Projekt verwendet keine einheitliche Framework-Version. Komponenten, die vom Zend Framework übernommen wurden, behalten ihre bestehenden Versionen bei und alle früheren Releases wurden von ihren jeweiligen Pendants migriert. Das Meta-Paket `zendframework/zendframework` hat kein Gegenstück in Laminas.
Laminas umfasst folgende Komponenten: [ 13 ]
| Komponente | Beschreibung |
|---|---|
| Authentifizierung | Authentifizieren Sie Benutzer über eine Vielzahl von Adaptern und stellen Sie Ihrer Anwendung die authentifizierte Identität zur Verfügung. |
| Barcode | Programmgesteuerte Erstellung und Darstellung von Barcodes als Bilder oder in PDFs. |
| Cache | Implementierung von Caching mit einer Vielzahl von Speicheroptionen sowie kodifizierten Caching-Strategien für Rückruffunktionen, Klassen und Ausgaben. |
| Captcha | Generieren und validieren Sie CAPTCHAs mithilfe von Figlets, Bildern, ReCaptcha und mehr. |
| Code | Erweiterungen der PHP Reflection API, statisches Code-Scanning und Code-Generierung. |
| Komponenten-Installer | Composer-Plugin zum Einfügen von Modulen und Konfigurationsanbietern in die Anwendungskonfiguration. |
| Konfiguration | Konfigurationsdateien lesen und schreiben. |
| Konfigurationsaggregator | Konfigurationen aus verschiedenen Quellen aggregieren und zusammenführen. |
| Konsole | Erstellen Sie Konsolenanwendungen mit getopt-Syntax oder Routing, inklusive Eingabeaufforderungen. |
| Krypta | Starke Kryptografie-Tools und Passwort-Hashing. |
| DB | Datenbankabstraktionsschicht, SQL-Abstraktion, Ergebnismengenabstraktion sowie RowDataGateway- und TableDataGateway-Implementierungen. |
| Debuggen | Sichere Ausgabe von Debug-Informationen in HTML. |
| DI | Automatisierte Abhängigkeitsinjektion und Instanzverwaltung. |
| Diactoros | PSR-7 HTTP-Nachrichtenimplementierungen. |
| DOM | Abfragen von HTML- und XML-Dokumenten mithilfe von XPath- oder CSS-Selektoren. |
| Ausbrecher | Sicheres und zuverlässiges Maskieren von HTML, HTML-Attributen, JavaScript, CSS und URLs. |
| Eventmanager | Implementieren Sie Ereignisse, Signal-Slots, Aspekte und Beobachter! |
| Ausdrucksvoll | PSR-7 Middleware in Minuten. |
| Füttern | Atom- und RSS-Feeds konsumieren und generieren sowie mit Pubsubhubbub interagieren. |
| Datei | Suchen Sie die PHP-Klassendateien. |
| Filter | Programmatisch filtern und normalisieren Sie Daten und Dateien. |
| Bilden | Einfache und komplexe Formulare validieren und anzeigen, Formulare in Geschäftsobjekte umwandeln und umgekehrt. |
| HAL für PSR-7 | Hypertext Application Language (HAL) für PSR-7. |
| HTTP | Abstraktionen von HTTP-Nachrichten und -Headern sowie eine HTTP-Client-Implementierung. (Keine PSR-7-Implementierung.) |
| Hydrator | Objekte in Arrays serialisieren und umgekehrt. |
| InputFilter | Normalisieren und validieren Sie Eingabemengen aus dem Web, APIs, der CLI und mehr, einschließlich Dateien. |
| Internationalisierung | Stellen Sie Übersetzungen für Ihre Anwendung bereit und filtern und validieren Sie internationalisierte Werte. |
| JSON | JSON in PHP de- und serialisieren, einschließlich JavaScript-Ausdrücken. |
| JSON-RPC-Server | JSON-RPC-Implementierung für PHP. |
| LDAP | LDAP-Operationen durchführen, einschließlich der Bindung, Suche und Änderung von Einträgen in einem LDAP-Verzeichnis. |
| Lader | Strategien für das automatische Laden und das Laden von Plugins. |
| Protokoll | Robuster, kombinierter Logger mit Filter-, Formatierungs- und PSR-3-Unterstützung. |
| Post | E-Mail-Nachrichten analysieren, erstellen, speichern und versenden – unter Verwendung verschiedener Speicher- und Transportprotokolle. |
| Mathe | Erstellen Sie kryptografisch sichere Pseudozufallszahlen und verwalten Sie große ganze Zahlen. |
| Erinnerung | Datenverwaltung in einer Umgebung mit begrenztem Speicherplatz. |
| MIME | MIME-Nachrichten und -Teile erstellen und analysieren. |
| Modulmanager | Modulares Anwendungssystem für Zend-MVC-Anwendungen. |
| MVC | Die ereignisgesteuerte MVC-Schicht von Laminas umfasst MVC-Anwendungen, Controller und Plugins. |
| MVC-Konsolenintegration | Integration zwischen zend-mvc und zend-console. |
| MVC-i18n-Integration | Integration zwischen zend-mvc und zend-i18n. |
| fileprg() Plugin | Post/Redirect/Get-Plugin mit Dateiupload-Funktion für Zend-MVC-Controller. |
| flashmessenger() Plugin | Plugin zum Erstellen und Anzeigen von Flash-Nachrichten über Zend-MVC-Controller. |
| identity()-Plugin | Plugin zum Abrufen der aktuell authentifizierten Identität innerhalb von Zend-MVC-Controllern. |
| prg() Plugin | Post/Redirect/Get-Plugin für Zend-MVC-Controller. |
| Navigation | Verwalten Sie Baumstrukturen von Verweisen auf Webseiten, um Navigationssysteme zu erstellen. |
| Paginator | Paginierte Datensammlungen aus beliebigen Quellen. |
| ACL | Zugriffskontrolllisten erstellen, verwalten und abfragen. |
| RBAC | Stellen Sie rollenbasierte Zugriffskontrollen für Ihre Anwendung bereit und prüfen Sie diese. |
| Problemdetails | PSR-7 Problemdetails für HTTP-API-Antworten und Middleware. |
| Fortschrittsanzeige | Fortschrittsbalken in verschiedenen Umgebungen erstellen und aktualisieren. |
| PSR-7 Brücke | PSR-7 <-> zend-http Nachrichtenkonvertierungen. |
| Router | Flexibles Routingsystem für HTTP- und Konsolenanwendungen. |
| Serialisierer | PHP-Strukturen serialisieren und deserialisieren in verschiedene Darstellungsformen. |
| Server | Erstellen Sie auf Reflektion basierende RPC-Server. |
| ServiceManager | Factory-gesteuerter Dependency-Injection-Container |
| ServiceManager-Di-Integration | Zend-Di-Integration für Zend-Servicemanager |
| Sitzung | Objektorientierte Schnittstelle zu PHP-Sessions und -Speicher. |
| SEIFE | SOAP-Anwendungen erstellen, bereitstellen und darauf zugreifen sowie WSDL parsen und generieren. |
| Standardbibliothek | SPL-Erweiterungen, Array-Hilfsprogramme, Fehlerbehandlungsfunktionen und mehr. |
| Stratigility | PSR-7 Middleware-Grundlage für den Aufbau und die Bereitstellung von Middleware-Pipelines. |
| Etikett | Markierbare Gegenstände manipulieren und wiegen sowie Tag-Clouds erstellen. |
| Prüfen | Tools zur Erleichterung von Unit-Tests von Zend-MVC-Anwendungen. |
| Text | Erstellen Sie FIGlets und textbasierte Tabellen. |
| URI | Objektorientierte Schnittstelle zu URIs mit Validierungsmöglichkeiten. |
| Validator | Validierungsklassen für ein breites Spektrum an Domänen und die Möglichkeit, Validatoren zu verketten, um komplexe Validierungskriterien zu erstellen. |
| Sicht | Flexible Ansichtsebene, die mehrere Ansichtsebenen, Hilfsfunktionen und mehr unterstützt und bereitstellt. |
| XML-RPC | Vollständig ausgestattete XML-RPC-Server- und Client-Implementierungen. |
| XML2JSON | XML-Dokumente in JSON konvertieren. |
Installation
Die offiziell unterstützte Installationsmethode ist die Verwendung des Paketmanagers Composer .
Laminas stellt ein Metapaket mit 61 Komponenten bereit, es wird jedoch empfohlen, die benötigten Framework-Komponenten einzeln zu installieren. Composer löst und installiert alle zusätzlichen Abhängigkeiten.
Wenn Sie beispielsweise das MVC- Paket benötigen, können Sie es mit folgendem Befehl installieren:
$ Composer benötigt Laminas/Laminas-MVC Eine vollständige Liste der Komponenten finden Sie in der Dokumentation des Laminas Frameworks. [ 13 ]
Anatomie des Gerüsts
Laminas verfolgt den Ansatz „Konfiguration vor Konvention“ und schreibt keine bestimmte Anwendungsstruktur vor. Es stehen Gerüstanwendungen für zend-mvc und zend-expressive zur Verfügung, die alles Notwendige zum Ausführen von Anwendungen bieten und einen guten Ausgangspunkt darstellen.
Sponsoren und Partner
Zend Technologies , mitbegründet von den PHP- Kernentwicklern Andi Gutmans und Zeev Suraski , war der ursprüngliche Unternehmenssponsor des Zend Frameworks. [ 14 ] Zu den Technologiepartnern gehören IBM , [ 15 ] Google , [ 16 ] Microsoft , [ 17 ] Adobe Systems , [ 18 ] und StrikeIron . [ 19 ]
Merkmale
Zu den Merkmalen von Laminas gehören: [ 20 ]
- Alle Komponenten sind vollständig objektorientiert in PHP 5 geschrieben und E_STRICT-konform, was die Entwicklung von Build-Tests und das Schreiben von Code für eine fehlerfreie und absturzsichere Anwendung erleichtert. [ 21 ]
- Architektur mit freier Nutzbarkeit, lose gekoppelten Komponenten und minimalen Abhängigkeiten
- Erweiterbare MVC -Implementierung mit standardmäßiger Unterstützung für Layouts und PHP-basierte Templates.
- Unterstützung für zahlreiche Datenbanksysteme und -anbieter, darunter MariaDB , MySQL , Oracle , IBM Db2 , Microsoft SQL Server , PostgreSQL , SQLite und Informix Dynamic Server.
- E-Mail-Erstellung und -Zustellung, Abruf über mbox , Maildir , POP3 und IMAP4
- Flexibles Caching-Subsystem mit Unterstützung für viele Arten von Backends, wie z. B. Arbeitsspeicher oder Dateisystem .
- Mithilfe von Remote Procedure Call (RPC) und REST ( Representational State Transfer ) Diensten unterstützt Zend Apigility Entwickler bei der Erstellung von APIs, der Authentifizierung von APIs , der Dokumentation von APIs und der einfachen Modifizierung [ 22 ].
Entwicklung von Anwendungen
Laminas-Anwendungen können auf jedem PHP-Stack ausgeführt werden, der die technischen Anforderungen erfüllt. Zend Technologies bietet mit Zend Server (oder Zend Server Community Edition) einen PHP-Stack an, der speziell für die Ausführung von Laminas-Anwendungen optimiert sein soll. Zend Server enthält in seinen Installationsprogrammen das Zend Framework sowie PHP und alle erforderlichen Erweiterungen. Laut Zend Technologies bietet Zend Server durch Opcode-Beschleunigung und verschiedene Caching-Funktionen eine verbesserte Performance für PHP- und insbesondere Zend Framework-Anwendungen und umfasst Funktionen zur Anwendungsüberwachung und -diagnose. [ 23 ] Zend Studio ist eine IDE mit Funktionen speziell für die Integration mit dem Zend Framework. Sie bietet eine MVC-Ansicht, MVC-Codegenerierung basierend auf Zend_Tool (einer Komponente des Zend Framework), einen Code-Formatter, Codevervollständigung, Parameterunterstützung und mehr. [ 24 ] Zend Studio ist keine freie Software, während das Zend Framework und die Zend Server Community Edition kostenlos sind. Zend Server ist mit gängigen Debugging-Tools wie Xdebug kompatibel . Andere Entwickler bevorzugen möglicherweise einen anderen PHP-Stack und eine andere IDE wie Eclipse PDT , die gut mit Zend Server zusammenarbeitet. Eine vorkonfigurierte, kostenlose Version von Eclipse PDT mit Zend Debug ist auf der Zend-Website verfügbar.
Code-, Dokumentations- und Teststandards
Codebeiträge zu Laminas unterliegen strengen Standards für Code, Dokumentation und Tests. Sämtlicher Code muss den Projekt-Codierungsstandards entsprechen und die Unit-Tests müssen eine Codeabdeckung von 80 % erreichen, bevor der entsprechende Code in den Release-Branch übernommen werden darf. [ 25 ]
Einfache Cloud-API
Am 22. September 2009 kündigte Zend Technologies [ 26 ] die Zusammenarbeit mit Technologiepartnern wie Microsoft , IBM , Rackspace , Nirvanix und GoGrid sowie der Zend Framework-Community an, um eine gemeinsame API für Cloud- Anwendungsdienste zu entwickeln: die Simple Cloud API . Dieses Projekt ist Teil des Zend Frameworks und wird auf der Zend Framework-Website [ 27 ] gehostet . Zusätzlich wurde die Website simplecloud.org [ 28 ] eingerichtet, um die aktuellsten Versionen der API zu diskutieren und herunterzuladen. Die Simple Cloud API und mehrere Cloud-Dienste sind im Zend Framework enthalten. Die Adapter für gängige Cloud-Dienste sind produktionsreif.
Aktuelle Entwicklung
Zend Framework 3.0 wurde am 28. Juni 2016 veröffentlicht. Es enthält neue Komponenten wie einen JSON-RPC-Server, einen XML-zu-JSON-Konverter, PSR-7-Funktionalität und Kompatibilität mit PHP 7. Zend Framework 3.0 ist bis zu viermal schneller als Zend Framework 2, und die Pakete wurden entkoppelt, um eine bessere Wiederverwendung zu ermöglichen. [ 12 ] Die Entwickler von Zend Framework empfehlen aktiv die Verwendung von Zend Framework Version 3.x. Das Supportende für Zend Framework 1 ist der 28. September 2016, für Zend Framework 2 der 31. März 2018. Die erste Entwicklungsversion von Zend Framework 2.0 wurde am 6. August 2010 veröffentlicht. [ 29 ] Zu den Änderungen dieser Version gehörten die Entfernung von require_onceAnweisungen, die Migration zu PHP-5.3-Namespaces, eine überarbeitete Testsuite, eine neu geschriebene Datei Zend\Sessionund die Hinzufügung der neuen Datei Zend\Stdlib. Die zweite Entwicklungsversion erschien am 3. November 2010. [ 30 ] Die erste stabile Version des Zend Framework 2.0 wurde am 5. September 2012 veröffentlicht. [ 31 ]
Siehe auch
Referenzen
- ^ „Archiv“ . Zend Framework . Archiviert vom Original am 10. Mai 2013. Abgerufen am 1. Mai 2013 .
- ^ "zendframework/zendframework" . GitHub . Archiviert vom Original am 29. Juli 2017. Abgerufen am 17. Mai 2017 .
- ^ „Einführung in das Zend Framework“ . ZF Programmer's Reference Guide . Archiviert vom Original am 11.02.2009 . Abgerufen am 12.02.2009 .
- ^ „PHP 5 Tutorial“ . www.w3schools.com . Abgerufen am 20.02.2017 .
- ^ a b „Zend Framework – Über uns“ . framework.zend.com . Archiviert vom Original am 06.02.2017 . Abgerufen am 05.02.2017 .
- ^ Supaartagorn, C. (2011). PHP-Framework für die Datenbankverwaltung basierend auf dem MVC-Muster. International Journal of Computer Science & Information Technology (IJCSIT) , 3 (2), 251-258.
- ^ „Von Zend zu Laminas“ . 17. April 2019.
- ^ „Technische Charta (die „Charta“) für das Laminas-Projekt, eine Reihe von LF Projects, LLC“ . GitHub . Archiviert vom Original am 03.08.2022 . Abgerufen am 03.08.2022 .
- ^ Gutmans, Andi (27.10.2005). „Zend Framework (Beitrag ist zu lang, also unbedingt Kaffee holen)“ . Andi on Web & IT . Archiviert vom Original am 08.07.2011 . Abgerufen am 11.02.2009 .
- ^ "Leitfaden für Mitwirkende (ZF v1)" .
- ^ „Split Framework“ . GitHub .
- ^ a b zendframework (28.06.2016). „Zend Framework 3 veröffentlicht!“ . Archiviert vom Original am 24.01.2022 . Abgerufen am 12.10.2016 .
- ^ a b "Dokumentation für die ZF-Komponenten" .
- ^ „Geschichte von PHP und verwandten Projekten“ . Die PHP-Gruppe. Archiviert vom Original am 8. Juli 2008. Abgerufen am 11. Februar 2009 .
- ^ LaMonica, Martin (25.02.2005). „IBM unterstützt Open-Source-Websoftware“ . cnet.com . Abgerufen am 11.02.2009 .
- ^ Kernel, Sean Michael (20.12.2006). „Google Data Joins PHP Zend Framework“ . internetnews.com . Archiviert vom Original am 12.06.2021 . Abgerufen am 11.02.2009 .
- ^ Krill, Paul (31.10.2006). „Microsoft und Zend fördern PHP für Windows“ . infoworld.com . Archiviert vom Original am 10.03.2009 . Abgerufen am 11.02.2009 .
- ^ Potter, Mike (21.05.2014). „Adobe Contributing AMF Support to Zend Framework“ . Der offizielle Flex Team Blog . Archiviert vom Original am 07.02.2009 . Abgerufen am 11.02.2009 .
- ^ „StrikeIron Featured Partners“ . Archiviert vom Original am 11.04.2009 . Abgerufen am 11.02.2009 .
- ^ „Über Zend Framework“ . Archiviert vom Original am 11.02.2009 . Abgerufen am 11.02.2009 .
- ^ Warum Zend Framework verwenden? Archiviert am 8. Mai 2016 im Internetarchiv (Wayback Machine) von SuntecOSS, abgerufen am 21. April 2016
- ^ Zends Apigility, ein Open-Source-API-Builder zur Entwicklung hochwertiger APIs. Von SuntecOSS, abgerufen am 19. Mai 2016.
- ^ „Zend-Website“ . Zend.com . Abgerufen am 17. Mai 2017 .
- ^ „Zend Studio herunterladen – IDE, PHP-Profiler, mobile Anwendungen, Unit-Tests & mehr“ . www.Zend.com . Archiviert vom Original am 1. Juni 2017. Abgerufen am 17. Mai 2017 .
- ^ „Zend Framework Contributor Guide“ . 1. Juli 2006. Archiviert vom Original am 18. Mai 2008. Abgerufen am 14. Juli 2008 .
- ^ „Pressemitteilung zur Simple Cloud API“ . Archiviert vom Original am 1. Dezember 2009. Abgerufen am 5. November 2009 .
- ^ „Zend Framework-Website“ . Archiviert vom Original am 05.06.2009 . Abgerufen am 05.11.2009 .
- ^ "simplecloud.org" . Archiviert vom Original am 25.09.2009 . Abgerufen am 05.11.2009 .
- ^ „Zend Framework 2.0.0dev1“ . 06.08.2010. Archiviert vom Original am 21.08.2010 . Abgerufen am 04.09.2010 .
- ^ „Zend Framework 2.0.0dev2“ . 03.11.2011. Archiviert vom Original am 16.07.2011 . Abgerufen am 18.03.2011 .
- ^ „Zend Framework 2.0.0 STABLE veröffentlicht! – Zend Framework – Zend Framework“ . Framework.zend.com. 5. September 2012. Archiviert vom Original am 21. Juli 2021. Abgerufen am 14. Juni 2013 .