10 zwingende Gründe für die Verwendung von Zend Framework

Versuchen Sie zu entscheiden, welches Framework für Ihr neues Projekt verwendet werden soll? In diesem Artikel werden wir ausführlich darüber sprechen, warum Zend Framework Ihr PHP-Framework der Wahl sein sollte.


Einführung

Unabhängig davon, ob Sie ein neues Projekt beginnen oder ein bestehendes verbessern, ich habe in diesem Artikel zehn Gründe angegeben, warum Sie Zend Framework für Ihr nächstes Projekt verwenden sollten. Hoffentlich hilft es Ihnen, eine fundierte Entscheidung zu treffen.


Grund 1. Erweitern Sie die Klassen so, als gäbe es kein Morgen

Zend Framework ist ein vollständig objektorientiertes Framework und verwendet daher viele objektorientierte (OO) Konzepte wie Vererbung und Schnittstellen. Dadurch sind die meisten, wenn nicht alle Komponenten von ZF bis zu einem gewissen Punkt erweiterbar. Damit können Entwickler ihre eigenen speziellen Variationen einzelner Komponenten implementieren, ohne sich in die ZF-Codebase selbst einhacken zu müssen. Durch die Möglichkeit, ZF auf diese Weise anzupassen, können Sie Funktionen erstellen, die für Ihr Projekt einzigartig sind. Aufgrund ihrer objektorientierten Ausrichtung können Sie diese Funktion jedoch auch in anderen Projekten verwenden.

Beispiel

Zend Framework verfügt über eine sehr umfangreiche Validierungskomponente, mit der Sie Daten aus Formularen überprüfen können. In ZF werden Formulare auch als Objekte behandelt und durch die Komponente Zend_Form dargestellt.

Angenommen, Sie möchten einen benutzerdefinierten URL-Prüfer erstellen, um die URL-Eingabe durch den Benutzer einzuschränken. Der schnellste Weg, dies zu tun, wäre die Überprüfung der Eingabe mit etwas wie:

 $ isValid = filter_var ($ submit_url, FILTER_VALIDATE_URL);

Dies hängt jedoch nicht von der OO-Natur von Formularobjekten ab, da es nicht im Kontext des Formulars verwendet wird. Um dies zu lösen, können wir eine neue Zend_Validator-Klasse erstellen, indem Sie die Zend_Validate_Abstract-Klasse erweitern:

  "'% value%' ist keine gültige URL.",); public function isValid ($ value) $ valueString = (Zeichenfolge) $ value; $ this -> _ setValue ($ valueString); if (! Zend_Uri :: check ($ value)) $ this -> _ error (self :: INVALID_URL); falsch zurückgeben;  return true; 

Hierbei wird die Zend_Uri-Klasse verwendet, für die bereits eine URL-Überprüfungsmethode verwendet wird. Da die Zend_Validate_Abstract-Klasse jedoch nicht erweitert wird, haben wir eine Wrapping-Klasse implementiert, die die erforderliche abstrakte Klasse implementiert. Dadurch können wir die Zend_Uri-URL-Überprüfungsfunktion in unseren Zend_Form-Objekten wie folgt verwenden:

 setMethod ('POST'); $ this-> setAction ('/ index'); $ site = $ this-> createElement ('text', 'siteurl'); $ site-> setLabel ('Site URL'); $ site-> setRequired (true); // Hinzufügen des benutzerdefinierten Validators hier! $ site-> addValidator (new Zend_Validate_Url ()); $ this-> addElement ($ site); $ this-> addElement ('submit', 'sitesubmit', array ('label' => 'Submit')); 

Wenn wir prüfen möchten, ob unsere URLs gültige YouTube-Video-URLs sind, können wir Folgendes tun:

  "'% value%' ist keine gültige URL.",); public function isValid ($ value) $ valueString = (Zeichenfolge) $ value; $ this -> _ setValue ($ valueString); if (strpos ($ value, "http://www.youtube.com/watch?v=")! == 0) $ this -> _ error (self :: INVALID_URL); falsch zurückgeben;  return true; 

Wenn wir dies zu unserem Website-Formularobjekt als Prüfer hinzufügen, wird sichergestellt, dass alle übermittelten URLs mit dem korrekten YouTube-Video-URL-Präfix beginnen.


Grund 2. Objektorientierte Güte


Mit freundlicher Genehmigung von http://www.developer.com

Im Zend Framework, alles ist ein Objekt, wie unser Beispiel oben zeigt. Dies bringt seine eigenen Nachteile mit sich, etwa die Codierung der Dinge. Sein Hauptvorteil ist jedoch die Möglichkeit, Code wiederverwendbar zu machen. Da sich niemand gerne wiederholt, ist dies eine sehr gute Sache.

Beispiel

Wir haben bereits unsere Zend_Validate_Url- und Form_Site-Klasse aus unserem obigen Beispiel, also verwenden wir sie in diesem Beispiel.

 _request-> isPost () && $ siteform-> isValid ($ this -> _ request-> getPost ())) // Sachen, wenn die Eingabe korrekt ist $ this -> _ redirect ("/ index / correct");  $ this-> view-> siteform = $ siteform;  public function correctAction () // Ja, wir verwenden unser Form_Site-Objekt erneut! $ this-> view-> siteform = new Form_Site (); 

So würde es auf einem Browser aussehen:

Wenn Sie versucht haben, eine ungültige URL zu übermitteln, können Sie unseren URL-Prüfer bei der Arbeit sehen:

Hier können Sie sehen, was passieren würde, wenn Sie eine gültige URL eingegeben hätten:

Wie Sie sehen, mussten wir unseren Formularobjektcode nie wiederholen.

"Zend_Validate-Klassen können auch auf andere Weise verwendet werden, nicht nur im Kontext von Zend_Form-Klassen. Sie instanziieren einfach eine Zend_Validate-Klasse und rufen die isValid ($ parameter) -Methode auf, wobei sie den Wert übergeben, den Sie validieren möchten."


Grund 3. Verwenden Sie, was Sie brauchen, vergessen Sie alles andere

Mit freundlicher Genehmigung von http://dev.juokaz.com

Das Zend Framework ist einfach eine Sammlung von Klassen. Normalerweise verwenden Sie Zend MVC-Komponenten, um ein voll funktionsfähiges ZF-Projekt zu erstellen. In jedem anderen Fall können Sie einfach die benötigten Komponenten laden. ZF ist sehr entkoppelt, dh wir können die Komponenten als einzelne Bibliotheken anstelle des Rahmens als Ganzes nutzen.

Wenn Sie sich andere Rahmenartikel angesehen haben, haben Sie wahrscheinlich von diesem Begriff gehört Kleberahmen. ZF ist standardmäßig ein Kleberahmen. Durch die entkoppelte Beschaffenheit ist es einfach, als "Kleber" für Ihre bereits vorhandene Anwendung zu verwenden.

Es gibt eine Debatte zwischen der Verwendung von Leim-Frameworks und Full-Stack-Frameworks. Full-Stack-Frameworks Diese bieten Ihnen alles, was Sie zum Erstellen Ihres Projekts benötigen, wie ORM-Implementierungen, Code-Generierung oder Scaffolding. Full-Stack-Frameworks erfordern zum Erstellen eines Projekts den geringsten Aufwand, sind jedoch hinsichtlich der Flexibilität zu kurz, da sie Ihrem Projekt strenge Konventionen auferlegen.

Beispiel

Angenommen, Sie benötigen eine Möglichkeit, Informationen zu einem bestimmten Video auf YouTube abzurufen. Zend_Gdata_Youtube ist eine ZF-Komponente, mit der Sie über die GData-API auf Daten von YouTube zugreifen können. Das Abrufen der Videoinformationen ist so einfach wie folgt:

 // Stellen Sie sicher, dass Sie die Zend_Gdata_Youtube-Klasse laden. Diese Annahme setzt voraus, dass sich ZF im include_path Ihres PHP befindet. Include_once "Zend / Gdata / Youtube.php"; $ yt = new Zend_Gdata_YouTube (); // getVideoEntry übernimmt die YouTube-Video-ID, die normalerweise die Buchstaben am Ende einer YouTube-URL ist, z. http://www.youtube.com/watch?v=usJhvgWqJY4 $ videoEntry = $ yt-> getVideoEntry ('usJhvgWqJY4'); Echo 'Video:'. $ videoEntry-> getVideoTitle (). "
"; echo 'Video ID:'. $ videoEntry-> getVideoId ()."
"; echo 'Updated:'. $ videoEntry-> getUpdated ()."
"; echo 'Description:'. $ videoEntry-> getVideoDescription ()."
"; echo 'Category:'. $ videoEntry-> getVideoCategory ()."
"; echo 'Tags:'. implode (", ", $ videoEntry-> getVideoTags ())."
"; echo 'Wiedergabeseite:'. $ videoEntry-> getVideoWatchPageUrl ()."
"; echo 'Flash Player-URL:'. $ videoEntry-> getFlashPlayerUrl ()."
"; echo 'Duration:'. $ videoEntry-> getVideoDuration ()."
"; echo 'Anzahl anzeigen:'. $ videoEntry-> getVideoViewCount ()."
";

Codebeispiel mit freundlicher Genehmigung des Google Developer's Guide

Dieser Code würde Folgendes ausgeben:

Hierbei ist zu beachten: Diese Zend Framework-Komponente (GData) ist die offiziell Von Google empfohlene PHP-Bibliothek für den Zugriff auf die API. Die entkoppelte Struktur des Frameworks ermöglicht es uns, die Komponente in jedem Projekt zu verwenden, unabhängig von dem Framework, mit dem wir sie erstellt haben.


Grund 4. Sie können viele Dinge tun!

An Zend Framework mag ich am meisten, dass es so ist VIEL von Komponenten. Benötigen Sie eine Möglichkeit, einen Benutzer zu authentifizieren? Verwenden Sie Zend_Auth. Müssen Sie den Zugriff auf Ihre Ressourcen kontrollieren? Zend_Acl nachschlagen. Müssen Sie einige Formulare erstellen? Wir haben Zend_Form. Müssen Sie einen RSS-Feed lesen? Sie können Zend_Feed dafür verwenden. Es ist im Grunde das Schweizer Armeemesser der PHP-Klassen!

Zend enthält einige Demos, die zeigen, wie die verschiedenen Komponenten verwendet werden:

Um diese anzuzeigen, laden Sie einfach die Vollpaketversion von Zend Framework herunter und testen Sie sie auf Ihrem Computer.

Eine vollständige Liste aller Komponenten finden Sie im Zend Framework Manual.


Grund 5. Keine Modellimplementierung - Wählen Sie Ihr eigenes Abenteuer!

Bild mit freundlicher Genehmigung von http://www.vintagecomputing.com

Dies ist eigentlich einer der Gründe die meisten Entwickler verwenden Zend Framework nicht - es hat keine eigene Modellimplementierung. Für diejenigen, die nicht wissen, was ein Modell ist, ist es das M im MVC, Dies steht für "Model-View-Controller", eine Programmierarchitektur, die von den meisten PHP-Frameworks verwendet wird.

Bedeutet das, dass Zend Framework nur ein "VC" Framework ist?

Ja und nein.

Ja, es ist ein VC-Framework, da es keine eigene Model-Implementierung gibt. Dies macht es für manche Benutzer schwierig, ZF zu verwenden, insbesondere wenn sie aus einem Framework stammen, das über eine Model-Implementierung verfügt (wie CakePHP, Symfony oder sogar Ruby on Rails)..

Auf der anderen Seite, nein, es ist auch ein MVC-Framework, da es nicht nur die generischen Möglichkeiten des Zugriffs auf die Datenbank (mithilfe von Zend_Db) bietet, sondern auch eine Art Modellimplementierung. Anders ist es, dass diese Art der Implementierung dem Entwickler überlassen bleibt. Einige sagen, dass dies der Fall sein sollte, da Modelle tatsächlich die Geschäftslogik der Anwendung sind und daher nicht als etwas entwickelt werden können eine generische Komponente. Laut Zend Framework Philosophy sind Modellimplementierungen für das Projekt einzigartig - es ist unmöglich, eine abstrakte Implementierung davon zu erstellen, da sie nicht wirklich wissen, was Sie brauchen. Sie glauben, dass Modelle von den Entwicklern selbst implementiert werden sollten.

Wie ist das eine gute Sache??

Wenn keine Modellimplementierung vorhanden ist, kann der Entwickler die zum Implementieren erforderlichen Mittel verwenden oder sogar vorhandene Implementierungen integrieren. Da der Entwickler keine vordefinierten Einschränkungen hat, kann er komplexere Implementierungen erstellen und nicht nur einfache Tabellendarstellungen, wie dies bei Modellimplementierungen üblich ist. Modelle enthalten Ihre Geschäftslogik. Sie sollten nicht von Ihren Datenbanktabellen eingeschränkt werden. Sie sollten vielmehr die Verbindungen dieser Tabellen untereinander diktieren. Auf diese Weise können Sie den größten Teil Ihres Programmiercodes in Ihre Modelle einfügen, wodurch das Paradigma "Thin Controllers, Fat Models" von MVC erfüllt wird.

Wie verwende ich Zend Framework, wenn ich keine Idee habe, wie ich meine eigenen Modelle erstellen kann??

Für Anfänger zeigt das Zend Framework Quickstart-Tutorial eine gute Möglichkeit, Modelle zu implementieren. Im Lernprogramm implementieren sie einen ORM-Ansatz für die Modelle, wobei Sie drei Dateien erstellen würden - das eigentliche Modell, bei dem es sich um eine abstrakte Darstellung Ihres Objekts handelt. einen Mapper, der Daten aus der Datenbank Ihrem Modell zuordnet; und ein Datenbanktabellenobjekt, das vom Mapper zum Abrufen der Daten verwendet wird. Sie können den Code im ZF Quickstart-Lernprogramm auschecken, in dem das Modell einer einfachen Guestbook-Anwendung mit diesem Ansatz implementiert wurde.

Für diejenigen, die fragen "Warum muss ich das selbst programmieren, während andere Frameworks die Arbeit für mich erledigen?", Ist dies ein perfekter Übergang zu meinem nächsten Grund ...


Grund 6. Integrieren Sie mit was auch immer Sie wollen!

Durch die entkoppelte Struktur von Zend Framework ist die Integration anderer Bibliotheken, die Sie verwenden möchten, sehr einfach. Angenommen, Sie möchten Smarty als Templatensystem verwenden. Dies kann durch einfaches Erstellen einer Wrapping-Klasse für Zend_View_Abstract erfolgen, die eine Smarty-Instanz zum Rendern der Ansicht verwendet.

Dies funktioniert in beide Richtungen, da Sie ZF auch in andere Bibliotheken integrieren können. Sie können ZF beispielsweise in Symfony integrieren. Sie planen dies mit Symfony 2 unter Verwendung der Zend_Cache- und Zend_Log-Komponenten von ZF.

Beispiel

In unserem Beispiel versuchen wir Doctrine zu verwenden, um unser Modell zu implementieren. Fahren Sie mit unserem Standortbeispiel fort und sagen Sie, dass Sie Ihre DB-Tabelle bereits so implementiert haben:

 CREATE TABLE 'site' ('id' int (10) vorzeichenlos NOT NULL AUTO_INCREMENT, 'url' varchar (100) ZEICHENSATZ latin1 NOT NULL, PRIMARY KEY ('id'));

Um Doctrine in ZF zu integrieren, müssen wir sicherstellen, dass die richtigen Einstellungen definiert sind. Ich bin diesem Tutorial von dev.juokaz.com über die Verwendung von Doctrine mit ZF gefolgt.

Vorausgesetzt, dass alles klappt, müssen Sie lediglich die Modelldateien erstellen, indem Sie die doctrine-cli.php PHP-Datei aus dem Tutorial wie folgt:

 php doctrine-cli.php generate-models-db

Sie sollten diese Erfolgsmeldung sehen:

Anschließend können Sie den Ordner überprüfen, den Sie als Speicherort für die generierten Modellklassen festgelegt haben.

Dann können wir in unserer Controller-Klasse einfach unsere Site Model-Klasse verwenden.

 _request-> isPost () && $ siteform-> isValid ($ this -> _ request-> getPost ())) // Sachen, die zu tun sind, wenn die Eingabe korrekt ist $ site = new Model_Site (); $ site-> url = $ this -> _ request-> getParam ('siteurl'); $ site-> save (); // auf unsere Erfolgsseite weiterleiten $ this -> _ redirect ("/ index / correct");  $ this-> view-> siteform = $ siteform;  public function correctAction () // Ja, wir verwenden unser Form_Site-Objekt erneut! $ this-> view-> siteform = new Form_Site (); 

Wenn wir unsere überprüfen Websites Tabelle, werden wir sehen, dass unsere Aufzeichnungen da sind

Jedes Mal, wenn wir eine Site einreichen, wird unser Controller nun unsere Doctrine-Modellimplementierung verwenden, um in unserer Datenbank zu speichern. Ist das nicht schön und leicht? Das Setup kann etwas kompliziert sein, aber auf der positiven Seite kann unser Projekt jetzt ein Werkzeug nutzen, das speziell für die Modellimplementierung entwickelt wurde. Unser Projekt hat jetzt die Kraft zweier sehr entwickelter Technologien.


Begründung 7. Richtlinien und Normen

Zend Framework wird in Verbindung mit einem sehr umfangreichen Contributor Guide entwickelt, der im Wesentlichen Folgendes besagt:

  1. Jeder Beitragende für Dokumentation und / oder Code auf jeder Ebene (entweder ein paar Zeilen Code, ein Patch oder sogar eine neue Komponente) muss einen Contribute-Lizenzvertrag (CLA) unterzeichnen..
  2. Code MUSS getestet und von einem Unit-Test mit PHPUnit abgedeckt werden. Und…
  3. Der Code muss strengen Codierungsstandards entsprechen

Diese strengen Richtlinien stellen sicher, dass Sie nur lesbaren, qualitativ hochwertigen Code verwenden, der gründlich getestet wurde.


Grund 8. Der gesamte Code ist schuldig, bis die Unschuld bewiesen ist (auch als Test-Driven Development bezeichnet)

Bild mit freundlicher Genehmigung von http://www.codesmack.com/

Testgetriebene Entwicklung ist eine Programmiertechnik, bei der ein Entwickler Tests für die zu schreibende Funktion schreiben muss, bevor er Code für die Funktion selbst schreibt. Durch das Schreiben der Tests wird sichergestellt, dass der Programmierer:

  1. Bedenkt die möglichen Anwendungsfälle seines Codes
  2. Erstellt eine Whitelist für Eingabe und Ausgabe
  3. Erleichtert das Umgestalten seines Codes
  4. Erleichtert das Weitergeben von Code von einer Person an eine andere

Der testgetriebene Entwicklungszyklus
Bild mit freundlicher Genehmigung von Wikipedia

Mit Zend Framework können Sie TDD einfach über Zend_Test ausführen, das PHPUnit verwendet, ein beliebtes Komponententest-Framework. Mit PHPUnit können Sie nicht nur Ihre Controller, sondern auch Ihre Bibliotheks- und Modellfunktionen testen. Zend_Tool, das Gerüstdienstprogramm von Zend Framework, enthält bereits Vorkehrungen für PHPUnit, wenn Sie es zum Erstellen Ihres Projekts verwenden.

Integration von PHPUnit und Zend Framework

Das Einrichten von Zend Framework und PHPUnit ist nicht so schwierig. Sobald Sie damit fertig sind, können Sie dasselbe Setup für Ihre zukünftigen Projekte verwenden. Als Randnotiz wird in den folgenden Schritten davon ausgegangen, dass Sie Zend_Tool verwendet haben, um Ihre Projektstruktur und Dateien zu erstellen, es sollte jedoch relativ einfach für andere Setups zu ändern sein.

Zuerst müssen wir PHPUnit installieren. Am besten installieren Sie es über PEAR:

 pear channel-discover pear.phpunit.de pear install phpunit / PHPUnit

Danach öffnen wir unsere phpunit.xml, eine von Zend_Tool erzeugte XML-Datei. Sie finden es in der Tests Ordner im Stammverzeichnis Ihres Projekts. Fügen Sie die folgenden Zeilen hinzu:

   .    … /Bibliothek … / Bewerbung  … / Bewerbung    

Erstellen Sie nach dem Speichern von phpunit.xml eine neue Datei in demselben Ordner wie phpunit.xml mit dem Namen TestHelper.php. Diese PHP-Datei hilft uns bei der Einrichtung der Umgebung für unsere Tests.

  

Anschließend erstellen wir unsere übergeordnete Controller-Testfallklasse, die alle unsere Controller erweitern werden. Dies hilft bei der Implementierung von Methoden, die normalerweise in allen Controller-Testklassen gleich sind.

 application = new Zend_Application (APPLICATION_ENV, APPLICATION_PATH. '/configs/application.ini'); $ this-> bootstrap = $ this-> Anwendung; parent :: setUp ();  public function tearDown () $ this-> resetRequest (); $ this-> resetResponse (); parent :: tearDown (); 

Zuletzt erstellen wir eine Controller-Testklasse:

 Versand('/'); $ this-> assertController ('index'); $ this-> assertAction ('index');  public function testCallingBogusTriggersError () $ this-> dispatch ('/ bogus'); $ this-> assertController ('error'); $ this-> assertAction ('error'); $ this-> assertResponseCode (404); 

Jetzt müssen Sie nur noch unseren Test durchführen. Öffnen Sie Ihre Eingabeaufforderung und gehen Sie zu Tests Ordner und Typ:

 phpunit 

Ihre Befehlszeile sollte Folgendes ausgeben:


PHPUnit und Zend Framework Setup Tutorial und Code mit freundlicher Genehmigung von http://www.dragonbe.com

Grund 9. Gemeinschaft und Dokumentation

Aufgrund seiner vielfältigen Komponenten, seiner Komplexität und seines vollständig objektorientierten Ansatzes verfügt Zend Framework über eine sehr steile Lernkurve. Aufgrund der umfassenden Dokumentation und der blühenden Gemeinschaft wird es leichter zu lernen. Das Zend Framework Programmer's Reference Guide enthält zunächst eine vollständige Anleitung alles ZF-Komponenten mit Beispielen, Code und Verwendungstheorien.

Abgesehen davon gibt es viele Blogs, die Tipps und Tricks zu Zend Framework enthalten. Zum Beispiel bietet Phly, boy, phly, der Blog von Matthew Weier O'Phinney, einem Core Contributor von Zend Framework, viele Einblicke, clevere Anwendungen und Erklärungen zu Komponenten für Zend Framework. Zend hat auch eine Website namens Zend Developer Zone, auf der neben den Tutorials für Zend Framework auch Zend Framework-Webinare, Podcasts und Artikel über PHP im Allgemeinen veröffentlicht werden. Eine andere Site namens Zend Casts bietet viele nützliche Video-Tutorials zu verschiedenen Zend Framework-Komponenten. Zu guter Letzt gibt es ein kostenloses Online-Buch namens Zend Framework: Surviving the Deep End ", geschrieben von P · draic Brady, einem weiteren Beitrag des Zend Framework.

Wie Sie sehen, gibt es keinen Mangel an Unterstützung durch die Community, die Dokumentation und die Entwickler. Wenn Sie Fragen haben oder Abklärungen benötigen, sollte eine schnelle Suche mit den richtigen Schlüsselwörtern fast immer zu relevanten Ergebnissen führen. Wenn nicht, gibt es immer noch die Zend Framework-Mailinglisten, die offiziellen Zend Framework-Foren, die inoffiziellen Zend Framework-Foren oder den inoffiziellen Zend Framework-IRC-Kanal


Grund 10. Zertifizierungen Ahoi!

Wenn Sie noch nicht überzeugt sind, Zend Framework zu erlernen und zu verwenden, ist dies der Grund, aus dem ich das Zend Framework meiner Meinung nach am meisten von allen anderen unterscheide. Zend bietet nicht nur die Zend Framework-Zertifizierung an, sondern auch die PHP-Zertifizierung. Durch das Angebot von Zertifizierungen hilft Ihnen Zend dabei, Ihr Fachwissen in PHP und Zend Framework einzusetzen, um Ihr Portfolio oder Ihren Lebenslauf zu verbessern. Auf der Zend-Zertifizierungssite werden einige Gründe für die Zertifizierung aufgeführt. Einige davon sind:

  1. Unterscheiden Sie sich von Ihren Mitbewerbern, wenn Sie nach einem neuen Job suchen
  2. Erhalten Sie Ihren Lebenslauf / Lebenslauf
  3. Lassen Sie Ihr Profil in den gelben Seiten von Zend für PHP-Profis anzeigen
  4. Seien Sie Teil der Linkedin-Gruppe Exklusiv für ZCE
  5. Erhalten Sie spezielle Rabatte auf Zend PHP-Konferenzen weltweit

Nachtrag

Um die Dinge im Gleichgewicht zu halten, finden Sie hier eine kurze Liste von Gründen nicht will Zend Framework verwenden:

  1. Sehr steile Lernkurve. Für fortgeschrittene PHP-Benutzer ist es nicht sehr schwer, aber für Anfänger gibt es viel zu lernen!
  2. Großer Fußabdruck. Da Zend Framework viele Komponenten enthält, ist die Gesamtgröße relativ höher als bei anderen Frameworks. Zum Beispiel hat der Systemordner von CodeIgniter im Vergleich zu 28 MB des Zend Framework einen 1,5 MB großen Speicherplatz.
  3. Kein solides Gerüstwerkzeug. Obwohl Zend_Tool einige Funktionen bietet, ist es nicht viel mit den Gerüstwerkzeugen von Full-Stack-Frameworks wie CakePHP oder Symfony zu vergleichen.
  4. Nicht für Webhosting freigegeben. Die von Zend_Tool generierte Ordnerstruktur legt nahe, dass der öffentliche Ordner das einzige über http aufrufbare Verzeichnis ist. Dies setzt voraus, dass ein Benutzer einen virtuellen Host für das Projekt erstellen kann. Dies ist in den meisten gemeinsam genutzten Webhosting-Umgebungen nicht möglich.
  5. Zu klebrig. Da sich alles in separaten Klassen befindet, ist es manchmal schwer vorstellbar, wie alles funktioniert. Dies ist bei Full-Stack-Frameworks kein Problem, da sie sich meist um alles kümmern. Ohne Zend_Tool wäre es äußerst schwierig, eine funktionierende Projektstruktur einzurichten

Fazit

In der Welt der PHP-Frameworks wurden in den letzten Jahren viele Fortschritte gemacht. Ich bin ehrlich, es gibt eine Menge Fische im Meer. Es gibt Frameworks wie Codeigniter, CakePHP und Symfony, die auch gut zu verwenden sind. Einige von Ihnen denken vielleicht: "Warum konzentrierte sich dieser Typ auf Zend Framework? Warum hat er keine Leistungstests durchgeführt, um die verschiedenen Frameworks zu vergleichen?" Dazu antworte ich mit diesem Zitat aus einem sehr unterhaltsamen Artikel mit dem Titel "PHP Framework Benchmarks: Entertaining but Ultimate Useless" von P. Draic Brady:

Um einen positiven Benchmark zu erstellen, müssen Sie verstehen, dass alle Rahmen als eiskalte Haufen von nicht optimiertem Stinkmist geboren wurden. Sie wurden alle schlecht geboren und verschlechtern sich mit zunehmendem Alter. Das klingt ziemlich traurig, aber eigentlich ist es ein unvermeidlicher Kompromiss zwischen Leistung und Funktionen. Es ist auch ein Kompromiss zwischen Leistung und Benutzerfreundlichkeit. Sie sehen also, dass die Leistung von zwei Gegnern zu Unrecht konfrontiert wird: Merkmale und Benutzerfreundlichkeit. Alle Leistungen werden im Namen geopfert, um den Anforderungen der schnellen Entwicklung, der Flexibilität, des Prototyping und der Verbesserung Ihres Quellcodes zu genügen. Als ob.

Was passiert, wenn du dich von den Feinden der Performance entfernst und hinter den Kulissen ein paar Schritte machst? Sie erhalten… warten darauf… jede Menge zusätzliche Leistung!

Wenn es darauf ankommt, hängt es wirklich davon ab, welches Framework Sie verwenden gemütlich du bist mit dabei Keines dieser Frameworks würde Ihnen helfen, wenn Sie deren Funktionen nicht voll ausnutzen können. Sie können Wochen oder sogar Monate damit verbringen, ein bestimmtes Framework zu verwenden, nur um es am Ende zu verwerfen, weil Sie es nicht so bequem wie andere Frameworks verwenden.

Also lade ich Sie ein, zumindest Zend auszuprobieren. Wenn es für Sie funktioniert, ist das großartig! Es tut mir gut. Wenn es nicht gut passt, probieren Sie die anderen aus. Schon bald werden Sie den Rahmen finden, der genau zu Ihren Bedürfnissen passt.