Ich bin Webentwickler und habe Erfahrung in der Entwicklung mehrerer Webanwendungen in PHP. Ich habe eine Idee, ein Produkt für mich selbst zu entwickeln, und habe mich für die Verwendung eines MVC-basierten Frameworks entschieden, da mir die Idee von MVC sehr gefällt und ich die Anwendung problemlos verwalten und ändern kann.
Ich habe mich für Zend Framework entschieden und es scheint schwieriger zu sein, eine neue Programmiersprache zu lernen. Es gibt so viele Dinge auf einmal, auch um eine kleine Anwendung auszuführen.
Ebenso ist die Idee des Routings sehr komplex, da es für einen Kernprogrammierer neu ist. Ich weiß, dass die Jungs hier Tausende solcher Fragen gelesen haben, aber ich möchte Zend Framework nicht über Nacht lernen. Ich bin bereit, so viel Zeit wie nötig zu geben, aber bis jetzt ergibt das für mich keinen Sinn. Es gibt Tausende von Klassen in der Zend-Bibliothek, aber woher weiß ein Noob, wo er eine bestimmte Klasse verwenden soll und wie er sie verwenden soll? Ich finde es immer noch sehr schwierig, den Bootstrap von Zend Framework und sein Mapping zu verstehen. Ich habe das Handbuch gelesen, befolge es und die Dinge beginnen zu funktionieren, aber ich weiß nicht genau, wie sie tatsächlich ablaufen.
Ich habe auch noch keine Ahnung, wie Modelle, Ansichten und Controller zusammenarbeiten und wie man eine Anwendung in Zend Framework plant. Wenn es um Core-PHP geht, habe ich genau die Idee, was ich tun soll, und kann sie dann leicht in Code übersetzen, aber in Zend Framework weiß ich nicht, wie ich meine Idee übersetzen soll.
quelle
Antworten:
Zend Framework ist schwer. Es wurde nicht als Einstiegs-Framework erstellt, sondern es werden Kenntnisse der Konzepte vorausgesetzt 1 . Das heißt, die erste Anforderung für Zend Framework 2.0 ist, es ein bisschen einfacher zu machen:
Es ist also nicht nur für Sie, sondern für alle schwierig - lesen Sie die gesamte Wiki-Seite, es gibt eine ganze Reihe von Dingen, die als unnötig komplex eingestuft werden. Aber selbst wenn die oben genannte Voraussetzung erfüllt ist, wird es kein Einstiegs-Framework, was bedeutet, dass es kein Framework ist, auf dem Sie lernen sollten, sondern eines, das Sie verwenden sollten, wenn Sie die Konzepte tatsächlich verstanden haben.
Da Sie noch lernen, wäre es viel wertvoller, eine eigene MVC-Architektur zu erstellen. Rasmus Lerdorf ist berüchtigt 2 „ No-Framework PHP MVC - Framework “ Blog - Post gibt ein sehr einfaches und sauberes Beispiel für MVC durch prozedurale PHP, ohne Rahmen oder andere Drittanbieter - Bibliothek beteiligt.
Wenn Sie jedoch wirklich mit einem Framework lernen möchten, sollten Sie ein Mikro-Framework anstelle eines vollständigen Frameworks in Betracht ziehen . Slim hat eine sehr kleine, saubere und gründlich getestete Codebasis und sollte ideal zum Lernen sein. Ich habe mit keinem anderen Mikro-Framework herumgespielt. Sie sollten Ihre eigenen Untersuchungen durchführen und entscheiden, welches für Sie besser ist.
Und für eine schnelle und schmutzige Einführung in das Routing, siehe meine Antwort auf diese Frage . Es ist kein sehr schwieriges Konzept, aber mit Zend Framework sieht es viel mehr aus, als es tatsächlich ist .
1 Die beste Beschreibung, die ich für ZF gelesen habe, ist, dass es sich um ein Framework handelt, das Framework erstellt , nicht um ein Anwendungsframework. Die Leistung und die extreme Liste der Funktionen sind nicht für kleine bis mittlere Websites geeignet. Kann leider nicht wirklich finden, wo ich das lese.
2 Lesen Sie den Haftungsausschluss oben im Blog-Beitrag.
Update, inspiriert von @ Karpies Kommentar:
Ein Framework soll nicht schwer sein, der springende Punkt eines Frameworks ist es, die Dinge einfacher zu machen. Es ist möglich, dass ZF trotz eines genauen Verständnisses der Konzepte nicht zu Ihnen passt.
Bei der Auswahl eines Frameworks spielen viele subjektive Faktoren eine Rolle. Wenn es keinem anderen Framework an Funktionalität mangelt, die Sie unbedingt benötigen - und Sie nicht selbst schreiben können, sollten Sie ZF meiden und ein Framework verwenden, das sich für Sie natürlicher anfühlt.
Wenn Sie die Konzepte kennen, sollte das Framework nicht stören.
quelle
Die mangelnde Erkennbarkeit hat mir nicht gefallen, als ich mit dem Zend Framework angefangen habe. Zu viele Klassen sind auf Arrays angewiesen und Sie müssen nachsehen, welche Schlüssel Sie definieren können / müssen.
Es ist überhaupt nichts Falsches daran, eindeutige Methoden oder benannte Parameter zu haben, das würde einen großen Beitrag zur Auffindbarkeit leisten.
Das Yii-Framework ist mit so etwas noch schlimmer.
quelle
Einige Probleme mit ZF, die es nervig (und für Anfänger schwierig) machen, damit zu arbeiten:
ORM nicht enthalten . Man könnte meinen, dass dies die Grundlage eines modernen MVC-Frameworks sein sollte, doch ZF kommt nur mit
Zend_Db_Table
, was lächerlich niedrig ist. Sie können Doctrine verwenden, aber dann sind Sie auf sich allein gestellt, es ist in keiner Weise in ZF integriert.Nicht lesbare, aufgeblähte URL-Router . Beispielsweise werden 9 Codezeilen benötigt, um das einfachste Routing zu definieren:
Angesichts der Menge der damit zusammenhängenden Fragen ist es für die meisten Menschen alles andere als einfach. Außerdem kann ich nichts dafür und vergleiche es mit Django, wo das Äquivalent von oben wäre
Zend_Acl
ist für die meisten Anwendungsfälle viel zu kompliziert. Normalerweise müssen Sie sich authentifizieren, um den Benutzer zu identifizieren. Und eine Option, um den Zugriff auf einige Controller einfach nur auf authentifizierte Benutzer zu beschränken. Für viele Anwender reicht das aus. In einem komplizierteren Fall kann die Geschäftslogik des Controllers bestimmen, ob der Benutzer über Berechtigungen zum Ausführen bestimmter Aktionen verfügt. In ZF haben Sie nicht die Möglichkeit, den Zugriff einfach nur auf authentifizierte Benutzer zu beschränken. Die Standardmethode ist die Verwendung der ACL und des Rollensystems, unabhängig davon, wie einfach Ihre Anforderungen tatsächlich sind.Aufgeblähtes Verzeichnis- und Dateilayout . Die empfohlene Verzeichnisstruktur sieht folgendermaßen aus:
quelle
Zend Framework ist wie eine Reihe unabhängiger Bibliotheken, die zusammen wie ein Framework funktionieren. Es ist sehr schwer, etwas gleichzeitig entkoppelt und "einfach zu bedienen" zu entwickeln. Für "einfach zu bedienen" meine ich komplexe Dinge mit wenigen Codezeilen.
Mit Zend anzufangen ist schwieriger als mit anderen Frameworks wie CakePHP. Aber ich kann Ihre Anwendung auch einfacher erweitern und anpassen, ohne schmutzige Codes. Zend folgt außerdem den Standards und Designmustern im gesamten Code. Wenn Sie den Framework-Code gelesen haben, können Sie erraten, was los ist.
Wenn Sie sagen, dass Sie keine Ahnung haben, wie Modelle, Ansichten und Controller zusammenarbeiten, geben Sie dem Framework bitte keine Schuld. Es implementiert MVC wie jedes andere Framework, mit der Ausnahme, dass es das Modell von der Datenbankstruktur trennt, die in vielen Frameworks in derselben Klasse implementiert ist. Du wirst also mit vielen Klassen wie Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset usw. konfrontiert sein.
Aus diesem Grund ist Zend Framework meiner Meinung nach komplizierter, da es sehr entkoppelt ist und Sie seine Klassen in anderen Projekten verwenden können, die kein ZF verwenden.
quelle
Zend Framework erfordert solide Kenntnisse in OOP und Design Patterns. Aus meiner Erfahrung finde ich nur erfahrene Java-JEE-Struts-Spring-Programmierer, die sich leicht mit Zend Framework vertraut machen. Für durchschnittliche PHP-Entwickler ist es schwierig, die Konzepte und die Architektur von Zend Framework zu verstehen. Aber sieh mal! Zend Framework stammt von der Firma 'Zend', die PHP an erster Stelle erstellt. Es bedarf also einiger Überlegungen, wenn nicht sogar Respekt!
quelle
Ich glaube, zend ist nur, um die Dinge kompliziert zu machen, MVC ist nur ein Betrug, logischerweise funktioniert es wie einfaches PHP. aber Sie entwickeln es vor MVC, wie das Trennen von Dateien in verschiedenen Verzeichnissen.
Denken Sie daran, dass wer sagt, dass Zend sehr sicher und nicht in der Lage ist zu hacken, ein großer Dummkopf ist. Zend kann auch leicht hacken, wenn Sie keinen MySQL-Injektionsschutz verwendet haben. Ich möchte vorschlagen, dass Sie Ihre eigenen Funktionen definieren und Ihre Dateien dann in verschiedene Verzeichnisse unterteilen, um sie so ähnlich wie MVC zu gestalten. Speichern Sie Ihre Funktionen, Klassen und anderes Kernmaterial in einem Verzeichnis, das als Controller bezeichnet wird, und fügen Sie dann Ihre Webseiten in einem anderen Verzeichnis hinzu, wo Sie es benötigen Um alle diese Funktionsdateien einzuschließen, wird dieses Verzeichnis als Ansicht bezeichnet. Platzieren Sie Ihre Javascript- und CSS-Dateien in verschiedenen Verzeichnissen, die als Modell bezeichnet werden.
Denken Sie daran, dass in dieser Welt viele Menschen immer hart daran arbeiten, die Dinge komplizierter zu machen, weil sie selbst kompliziert zu verstehen sind.
PHP ist die Sprache, die Sie in Büchern und von Lehrern gelernt haben. Zend ist nicht nur ein Framework, um es Ihren Kunden zu erschweren. Wenn also ein Kunde Änderungen benötigt, wird er zu den echten Entwicklern zurückkehren und diese Entwickler werden Ihnen mehr Geld in Rechnung stellen. Zend ist geschützt, es ist alles nur Lüge, ein einziger Fehler wie einfaches PHP-Codieren kann dazu führen, dass die Website hackbar ist.
quelle
Zumindest das "Schnellstart" -Ding muss einfacher sein, um ein Framework benutzerfreundlich zu machen ..... Wenn Sie etwas Schwierigeres als Besseres bevorzugen, würde ich sagen "ZF ist das beste PHP-Framework", sonst NICHT. Ich habe ZF-2 heruntergeladen und ausprobiert (ehrlich gesagt bin ich ein Neuling bei ZF). Schade ist, dass ich mit einem einfachen Projektskelett im Internet noch keine solide "Kurzanleitung" gefunden habe. Ich suche nur nach einer einfachen Möglichkeit, Bibliotheksdateien einzuschließen und einen Projektordner mit MVC-Funktionen zu erstellen. Ich habe Codeigniter, Cake PHP, Yii verwendet, aber ich fand es ziemlich unfreundlich. Ja, ich weiß, dass Zend PHP aktualisiert, aber es bedeutet nicht, dass es das beste Framework ist oder was auch immer Sie sagen werden.
quelle