Warum ist Zend Framework so kompliziert?

42

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.

Umair Abid
quelle
10
Wenn Sie noch nicht mit MVC vertraut sind, implementieren Sie selbst ein MVC-Gerüst, bevor Sie eines der vollwertigen Gerüste verwenden. Sie eignen sich nicht zum Lernen.
Treecoder
2
@greengit das habe ich getan!
Kyle Hodgson
Zend Framework ist nicht schwer, es braucht ein bisschen Zeit, um es zu erlernen, da die Dokumentation schlecht ist, aber ich kann Ihnen versichern, dass es ein sehr leistungsfähiges Framework ist. Wir haben große Unternehmenssoftware auf ZF2 entwickelt, und die Flexibilität bei der Konfiguration ist bei ZF außergewöhnlich.
Albanx

Antworten:

38

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:

Erleichtern Sie die Lernkurve

Ende 2009 haben wir eine Umfrage unter Framework-Benutzern durchgeführt, um festzustellen, was sie verwenden, welche Umgebungen sie verwenden und welche Bedürfnisse sie haben. Das Hauptproblem war, abgesehen davon, die Schwierigkeit, das Framework zu erlernen. Einige dieser Probleme umfassen:

  • Schwierigkeiten in der "ersten Stunde" mit dem Framework.
  • Unsicherheit über die "nächsten Schritte" nach dem Schnellstart.
  • Inkonsistente APIs im Quellcode. Eine Komponente kann "Plugins", andere "Helfer" und noch weitere "Filter" verwenden.
  • Unsicherheit darüber, wo Erweiterungspunkte vorhanden sind und wie diese programmiert werden sollen.
  • Verwirrung darüber, ob Zend Framework nur als MVC-Stack oder als einzelne Komponenten verwendet werden kann.

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

yannis
quelle
3
Selbst wenn man die Konzepte kennt, ist es verdammt schwer, sich darauf einzulassen, und um ehrlich zu sein, glaube ich nicht, dass es die Mühe wert ist. Die Dokumentation ist oft falsch, Beispiele im Web sind normalerweise nicht mehr aktuell, der IRC-Supportkanal ist im Allgemeinen nicht mehr erreichbar, und von dem, was ich gesehen habe, gibt es keinen anderen Ort, an dem man Unterstützung bekommen kann.
Sevenseacat
@ Karpie Ich finde es nicht so schwer, um ehrlich zu sein. Aber es ist irgendwie idiomatisch, also passt es definitiv besser zu einigen Entwicklern als zu anderen. Ich finde es zum Beispiel einfacher zu verstehen als CodeIgniter, aber das liegt nur an meinem persönlichen Prozess: Ich lese lieber Code als Dokumentation, und der Code von CI ist so beschissen, dass meine Gedanken ausgehen. Aber für die meisten Entwickler ist CI viel einfacher zu erlernen als ZF, und nicht alle sind sich einig, dass der Code von CI voller Mist ist. Wichtig ist, dass ein Framework nicht schwer zu bedienen ist, wenn es immer andere gibt.
Yannis
Ich finde, dass Zend Framework 1 relativ leicht zu verstehen ist. Aber Sie sagten , die Idee hinter ZF2 war es zu machen einfacher , ich fühle mich wie es viel ist mehr komplexer als je zuvor.
gekauft777
Alles in ZF2 ist zu kompliziert. Es wäre in Ordnung, Zend "framework" als Sammlung von Modulen / Bibliotheken zu präsentieren. Der eigentliche Rahmen fehlt. Es gibt keine Modellebene, daher müssen Sie entweder Ihre eigene implementieren, was normalerweise ein Chaos ist, oder Doctrine verwenden, was eine gewisse Integration erfordert. Um einige Komponententests zu schreiben, müssen Sie lächerlich viel Zeit damit verbringen, das Handbuch zu entschlüsseln und Code zu schreiben (oder online zu suchen), nur um Ihre Tests zu starten. Während es sich um fundierte Konzepte handeln mag, ist ihre Interpretation dieser Konzepte schrecklich.
Vladko
11

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.

DBlackborough
quelle
3
+1 Mein Hauptgrund, warum ich die Aufnahme von ZF / ZF2 nicht ernsthaft in Betracht ziehe, ist die hässliche automatische Vervollständigung / Andeutung und das Ausweichen von verschachtelten Array-basierten Konfigurationen. Es verstößt gegen meine persönliche Abneigung gegen die Überbeanspruchung von Arrays in einer OO-Welt.
Gavin Howden
1
Genau meine Meinung auch.
Daniel
Ich finde Yii 1 nicht zu schwierig. Vielleicht ist das für mich. : P
Eugine Joseph
5

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:

$route = new Zend_Controller_Router_Route(
    'archive/:year',
    array(
        'controller' => 'archive',
        'action'     => 'show'
    ),
    array('year' => '\d+')
);
$router->addRoute('archive', $route);

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

url(r'^archive/(?P<year>\d+)/$', 'archive.show')

Zend_Aclist 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:

<project name>/
    application/
        configs/
            application.ini
        controllers/
            helpers/
        forms/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        services/
        views/
            filters/
            helpers/
            scripts/
        Bootstrap.php
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    library/
    public/
        css/
        images/
        js/
        .htaccess
        index.php
    scripts/
        jobs/
        build/
    temp/
    tests/
vartec
quelle
4

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.

gustavotkg
quelle
3

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!

Rohit
quelle
1
Rasmus Lerdorf hat PHP erstellt, zend ist ein großer Unterstützer von PHP. Soweit ich mich erinnere.
Sarmen B.
Kann dort nicht widersprechen. Ich bin ein Java-Entwickler. Ich habe mich nicht nur leicht in ZF zurechtgefunden, sondern es anderen Frameworks vorgezogen.
Jkushner
-2

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.

Pooja Dhimbani
quelle
-6

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.

RAM
quelle
LOL
Ram