Skripte angepasst für Zend Framework 1.8.4
Endlich ist es soweit und ich hatte Zeit, die Skripte aus dem Zend Framework Buch auf das neue Zend Framework 1.8.4 anzupassen. Das große Problem bei meinem Buch ist die Tatsache, dass es auf dem Zend Framework 1.7.4 basiert. Das war die bei Drucklegung aktuelle Version. Da so ein Buch zu drucken aber seine Zeit dauert und die Entwicklung des Frameworks stetig voran schreitet, ist ein Buch hinsichtlich der unterstützen Version meistens bei Erscheinen veraltet. Ich habe mir beim Schreiben aber große Mühe gegeben, dass die meisten Infos längerer Zeit gültig sind. Daher auch die regelmäßigen Verweise auf das meistens aktuellere Referenzhandbuch, wenn man spezielle Funktionen im Detail nachschlagen möchte. Wie die Leser wissen, bin ich sogar im Anhang auf einige neue Komponenten im Release 1.8 eingegangen, soweit dies zum damaligen Zeitpunkt überhaupt möglich war.
Doch ich habe die Rechnung ohne das Entwicklerteam gemacht, denn eine Änderung hat bei den meistens Setups vom Zend Framework doofe Notices ausgegeben. Ich denke, ihr wisst schon was ich meine: “Zend_Loader::registerAutoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead“. So laufen die Beispielanwendungen auf der CD-Rom zum Buch bei vielen nicht mehr, wenn man ein Release aus dem 1.8 Zweig einsetzt und das Error-Reporting entsprechend so eingestellt hat, dass diese Notice ausgegeben wird.
Ich habe nun alle Beispielanwendungen auf Lauffähigkeit mit dem aktuellen 1.8.4 Release hin überprüft und ggf. angepasst. Die Änderungen betreffen im Wesentlichen die Beispielanwendungen in folgenden Verzeichnissen:
/kapitel03/schnellstart/
/kapitel13/ajax/
/kapitel19/luigiblog/
/kapitel20/luigiguestbook/
/kurzlinks/
Geändert wurde vor allem der veraltete Aufruf von Zend_Loader::registerAutoload nach Zend_Loader_Autoloader::getInstance(), wobei bei Bedarf auch ein entsprechende Namespace definiert wird. Siehe auch im Manual. Zudem werden bei Bedarf auch die neuen Autoloader Ressourcen zum Laden von Models, Formularen usw. eingesetzt (siehe auch im Manual). Dabei mussten auch einige Dateien verschoben und Klassen umbenannt werden. So heisst eine Modelklasse z.B. nicht mehr Guestbook, sondern App_Model_Guestbook. Die fünf genannten Beispielanwendungen funktionieren somit wieder und auch die Unit-Tests in Kapitel 20 laufen wieder fehlerfrei durch.
Nicht geändert sind die alten Bootstrap-Dateien. Also ich habe Zend_Application nicht für das Bootstrapping eingesetzt. Wichtig war mir erst einmal, dass die Skripte wieder lauffähig werden, wenn ihr eine neuer Version einsetzt. Und nun könnt ihr die Dateien endlich downloaden. Ich hoffe, der Server hält das aus… ;-)
Feedback ist erbeten!



Mittwoch, 22.07.2009, um 21:27
[...] Buch auf die aktuelle Version 1.8.4 anzupassen. Weitere Infos sowie den Downloadlink findet ihr im Schwesterblog zum Zend Framework Buch. Tags » Buchprojekt, Ganz kurz « Trackback: Trackback-URL | Feed zum [...]
Donnerstag, 23.07.2009, um 11:00
Sehr schön, vielen Dank!
Donnerstag, 23.07.2009, um 23:19
Hallo,
ich habe mir heute Nachmittag auch dein Buch bestellt. Ich denke damit macht man nichts falsch. ;)
Und zu den Feedback. Klar. Es ändern sich immer viele Dinge. Man muß ja nicht gleich alles für 1.8 sagen. Wichtig wäre für die ZF Einsteiger nur, was genau geändert wurde. Aber das hast du ja hiermit gemacht.
Ich persönlich schrecke bisschen vor dem ZF zurück, (wie vielleicht viele) weil es in zig Dateien ausgelagert ist. Womit ich mich später noch intensiver beschäftigen möchte, ist der Cache, vielleicht kommt ja noch was von dir zu dem Thema. :)
Mfg Martin M
Freitag, 24.07.2009, um 07:10
Hallo Martin,
die vielen Dateien sehe ich eigentlich nicht so sehr als Problem. Wenn du z.B. Zend_Cache oder Zend_Pdf nutzt, kommst du im Wesentlichen nur mit wenigen Klassen direkt in Kontakt, obwohl die Komponenten aus einer Vielzahl an Klassen und Dateien bestehen.
Danke und Gruss,
Ralf
Montag, 27.07.2009, um 10:38
Spreadcity sagt danke, ist wirklich ein super Buch und das zeitnah Updates für die Scripte heraus kommen finde ich super! :-)
Donnerstag, 30.07.2009, um 22:14
Ich habe mir diese Woche das Buch geholt, weil ich mich ins Zend Framework einarbeiten möchte. Bin bis jetzt auch recht begeistert von dem Buch. Da mich zur Zeit vor allem die Webservices (allen voran Amazon) interessieren, stehe ich gerade vor folgendem Problem: wie müssen die Scripte 14.4 und 14.5 (Zend_Service_Amazon) ab August aussehen? Ich habe nämlich gelesen, dass eine Authentifizierung notwendig ist. Kann mir hier bereits jemand weiterhelfen?
Da ein gewisser Zusammenhang zu diesem Post besteht dachte ich mir, ich stelle diese Frage einfach mal hier.
Kann das Buch übrigens nur empfehlen, ist wirklich klasse!
Dienstag, 04.08.2009, um 01:33
Hallo,
ich arbeite ebenfalls gerade das Buch durch und muss sagen, dass ich anfangs sehr angetan davon war. Mittlerweile jedoch überwiegt Frust und Verzweiflung.
Zum einen funktioniert gerade mal das “PizzaService” Beispiel aus Kapitel 03, alle anderen Beispiele verabschieden sich direkt mit – für den Anfänger, wie mich – nichtssagenden Zend_Exceptions. Okay, das mag leider an der bereits schon wieder neueren Version des Zend Framework liegen. Wohlgemerkt, ich meine bereits die aktuellen Versionen, die nicht funktionieren wollen.
Insofern kann ich nur meinen Hut ziehen davor, dass bereits alle Beispiele auf den bis vor kurzem noch neuesten Stand gebracht wurden.
Aber leider merke ich gerade jetzt, wo kein Beispiel auch nur annähernd klappen will, was ich an dem Buch schlecht finde:
Wenn ich mir mein eigenes Projekt zusammen bauen will, bekomme ich in den einzelnen Kapiteln, nicht die klare Information, was ich dazu in die Bootstrap-Datei einzufügen habe und was bereits vom Zend Framework automatisch angenommen wird. Es wird aufgezeigt, welche Möglichkeiten ich habe, jedoch kein Beispiel ausgeführt, weshalb ich als Neuling dann doch wieder hilflos da stehe.
Ich kann mir zwar vorstellen, dass genau hier die größte Flexibilität des Frameworks liegt, aber als Zend Framework Anfänger und PHP-Fortgeschrittener würde ich bei jedem Kapitel bzw. Tool erwarten, dass einfach kurz in einer Box da steht, wie man die Sache in einem MVC-Projekt mit Bootstrap-Datei initalisiert.
Dienstag, 04.08.2009, um 06:35
Hallo Pascal,
genau das, was du ansprichst, war bis vor dem Release 1.8 ein grosses Problem beim Bootstrapping. Es gab halt keine wirklichen Vorgaben dafür. Durch Zend_Application hat sich dies aber grundlegend geändert. Leider konnte ich diese Version jedoch im Buch nicht ausführlich beschreiben da das Buch vor dem 1.8 Release fertig sein musste.
Ein guter Einstiegspunkt für deine Fragen wäre das Manual zu Zend_Application. http://framework.zend.com/manual/en/zend.application.html Dort findest du auch ein paar Beispiele. Zudem findest du im aktuellen PHP Magazin 5.09 auch ein paar Infos und Beispiele zu Zend_Application.
Das als allgemeine Hilfe. Wo liegt denn bei dir das konkrete Problem? Vielleicht kannst du einfach ein paar Beispiele nennen?
Danke und Gruss,
Ralf
Dienstag, 04.08.2009, um 15:46
Was spricht denn dagegen, das Buch einfach mit Version 1.7.4 zu nutzen. Im Nachhinein sollte man doch in der Lage sein, die entsprechenden Aktualisierungen aus dem ZF 1.8 und 1.9 selbst einfließen zu lassen, oder?
Dienstag, 04.08.2009, um 19:55
Hallo Ralf,
ich habe es mittlerweile dank
zf.sh create project …
geschafft eine lauffähige Version des Zend Framework auf die Beine zu stellen. So richtig verstanden habe ich die daraus entstandenen Dateien (index.php, leere Bootstrap-Klasse und Konfiguration) zwar noch nicht, aber immerhin kann ich mal mit dem MVC-Konzept meine ersten Experimente starten.
Die Probleme gingen aber bspw. schon weiter, als ich mich ans Thema Internationalisierung machen wollte. Wo genau bindet man nun die Zend_Locale- und die Zend_Translate-Klasse als erstes ein? Ich habe es nun mittlerweile durch Einfügen in die index.php hinbekommen, aber so richtig professionell scheint mir das nicht.
Genau da setzt meine Kritik an. Sobald man nämlich verstanden hat, was die Zend-Klassen einem an toller Hilfe leisten können, möchte man diese auch alle in sein Projekt integrieren: Zend_Auth, Zend_Acl, Zend_Locate, Zend_Translate. Und diese Einbindung – also alles zusammen – genau das kommt sowohl im Buch, als auch auf der Zend-Homepage zu kurz bzw. fehlt komplett.
Statt der vielen abstrakten – und für mich trotz sorgfältiger Lektüre zu komplexen – Datenbank- bzw. Model-Hilfsklassen in Kapitel 19, hätte ich ein sauberes Grundgerüst für eigene Projekte erwartet. So versucht man stundenlang und am Ende womöglich vergeblich, auf Basis von Kapitel 19 ein eigenes Projekt aufzuziehen.
Gruß
Pascal
Donnerstag, 06.08.2009, um 17:02
@Benni eigentlich nichts, wenn man sich ins ZF eingearbeitet hat. Das Problem ist halt, dass die Meldung “Zend_Loader::registerAutoload is deprecated as of 1.8.0…” schon sehr viele vor Probleme stellt, wenn sie 1.8.x oder höher einsetzen. Ist halt das größte Problem an den Skripten zum Buch, aber so was ist nie planbar, da ein Buch immer seine Zeit braucht, bis es gedruckt und verkauft werden kann. Mit den ca. 2 Monaten war Addison-Wesley aber schon sehr schnell…
Donnerstag, 06.08.2009, um 17:07
@Pascal
Also mit der “alten Methode”, die im Buch beschrieben wird, sollten z.B. Zend_Locale und Zend_Translate in der alten Bootstrap-Datei das erste Mal aufgerufen und initialisiert werden. Man könnte auch über ein Controller-Plugin nachdenken. Mit der neuen Methode ab 1.8 ist die neue Bootstrap-Klasse und damit Zend_Application das geeignete Mittel der Wahl.
Ja, die Datenbank und Modelklassen in Kapitel 19 werde ich bei der Überarbeitung des Buches sicher wieder rauswerfen. Ist vielleicht doch etwas fehl am Platz gewesen. Wobei auch die offizielle QuickstartAnleitung vom ZF das Model immer weiter ausbaut. Da lohnt auch immer wieder ein Blick rein.
Noch zu Zend_Auth und Zend_Acl, da gibt es wie so oft mehrere Ansätze. Einen findest du ab Seite 195 im Buch. Dort wird ein Controller-Plugin eingesetzt.
Gruss,
Ralf
Freitag, 07.08.2009, um 16:54
@Ralf
Dein Tipp mit Seite 195 führt genau auf ein solches Problem, wie ich versucht habe zu beschreiben. Die Zeile
$acl = new Luigi_Acl::get…
lässt sich nicht ausführen, da das Zend Framework die Klasse Luigi_Acl nicht kennt.
WO und WAS definiert man jetzt genau, um das Laden der Klasse zu automatisieren.
Das zieht sich durch alle Themen fort: Plugins, Helper, etc.
Kann man nicht global definieren, dass er am Klassennamen versucht zu erkennen, wo er die Klasse findet? WO und WIE würde das dann aussehen?
Gruß
Pascal
Freitag, 07.08.2009, um 17:09
Hallo Pascal,
das liegt wieder an den Umstellungen in der Version 1.8 für den Autoloader. Du musst eigene Namespaces für Klassenerweiterungen auch angeben, das war vorher nicht nötig:
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace(’Luigi_’);
Siehe:
http://framework.zend.com/manual/en/zend.loader.autoloader.html
Gruss,
Ralf
Montag, 10.08.2009, um 15:49
Da ja hier gerade fleißig diskutiert wird, wollte ich nochmal nachfragen, was denn ab 15. August mit den Zend_Service_Amazon-Skripten passiert. Müssen die angepasst werden oder laufen die auch noch nach dem 15. August?
Gruß
Chris
Mittwoch, 12.08.2009, um 09:57
Zend_Service_Amazon wurde in 1.9 angepasst und sollte auch verwendet werden.
Mittwoch, 12.08.2009, um 22:27
Hallo,
erst diese aktive Webseite hat mich dazu gebracht, mir das Buch zuzulegen. Das die Beispiele bereits auf die Version 1.8.4 aktualisiert wurden, finde ich super. Das schafft nicht jeder Autor. Was ich mir noch wünschen würde, wäre das schnellstartbeispiel mit Zend_application und der application.ini. Hier komme ich gerade nicht wirklich weiter. ( obwohl ich sogar den dazugehörigen Artikel im PHP-Magazin vor mir liegen habe.)
Viele Grüße
Balian
Samstag, 15.08.2009, um 09:05
@Chris
habe für ein Projekt, das auf einer älteren ZF Version basiert und Zend_Service_Amazon verwendet, einfach die aktuelle Zend_Service_Amazon Klasse kopiert und die Skripte angepasst, die ZSA verwenden. Das funktioniert prima!
Danke und Gruss,
Ralf
Dienstag, 18.08.2009, um 08:21
Hallo,
ich habe mir gestern auch das Buch bestellt.
Habe gute Erfahrungen mit PHP und was so dazugehört.
Mit dem Zend Framework bin ich allerdings noch nicht in Berührung gekommen.
Meine Frage ist jetzt, da am 31. Juli ZF 1.9 veröffentlicht wurde, ob ich nun Probleme bekomme, wenn ich die (auf 1.8.4 geupdeteten) Beispiele verwende oder dann doch lieber die vorherige Version des ZF verwenden soll.
Gruß,
-Harry
Freitag, 21.08.2009, um 13:01
Hallo Ralf,
also ich habe es ehrlich gesagt noch nicht hinbekommen. Habe das Zend Framework aktualisiert und zum Teil auch die Scripte angepasst. Allerdings findet man hier im Netz lauter unterschiedliche Versionen. Ein defintiv funktionierendes Tutorial habe ich bisher noch nciht gefunden. Meiner Meinung nach wurde auch das Programmer’s Refference Guide auf framework.zend.com nicht aktualisiert. Oder habe ich da etwas übersehen?
Falls du mir noch ein paar Tipps geben könntest, was genau geändert werden muss, wäre ich dir sehr dankbar.
Bekomme derzeit immer folgende Fehlermeldung: “An error occurred sending request. Status code: 400″
Gruß
Chris
Montag, 24.08.2009, um 15:14
Ich wollte noch kurz Bescheid geben, dass ich das Problem zwischenzeitlich lösen konnte.
Anstelle von:
$query = new Zend_Service_Amazon_Query($key, ‘DE’);
ist nun:
$query = new Zend_Service_Amazon_Query($key, ‘DE’, $secret_key);
zu verwenden. Offensichtlich habe ich mich durch die vielen Tutorials etwas auf die falsche Fährte bringen lassen. Leider wurde in den Tutorials jedoch nicht erklärt, wie das Ganze auszusehen hat, wenn man das Zend Framework nutzt.
Wie dem auch sei, es funktioniert nun.
Nochmals besten Dank
Samstag, 29.08.2009, um 14:52
kann mich Pascal anschließen, Autodidakten mit fortgeschrittenem PHP-Wissen, die sich anhand des Beispiels Kapitel 19 einen Start versprechen, werden entäuscht.
Der Einstieg mit diesem Buch in das Framework fällt deutlich schwerer durch die Neuerungen des Frameworks aus.
Eine lauffähige Beispielapplikation würde ich in die nächste Überarbeitung auf jeden Fall reinnehmen!
Dienstag, 15.09.2009, um 07:54
[...] basiert das Buch noch auf der Version 1.7.4 des Frameworks und so sollte man sich vor dem Start die aktuellen Dateien aus dem angeschlossenen Blog des Autors [...]
Dienstag, 15.09.2009, um 13:14
Hallo Leute,
ich bin nun auch schon ne Weile damit beschäftigt, mit dem ZF Projekte zu realisieren. Ich kann Euch nur den Tipp geben, legt Euch auf eine Version des ZF fest, und macht Euer Projekt/wasauchimmer damit fertig! Ihr kommt in Teufels Küche, da die Releases des ZF schon ziemlich schnell erfolgen, und oftmals auch mehr oder weniger umfangreiche Änderungen vorgenommen werden. Ein Update auf das jeweils aktuelle Release kann dann im Anschluß erfolgen – so mache ich das jedenfalls.
Zum Thema Buch: Zum Erscheinungstermin war es das ultimativ beste Buch übers ZF. Man konnte sich gut in die Materie einarbeiten und bekam ne gute Ergänzung zu dem doch manchmal etwas konfusen Reference Guide.
Dienstag, 15.09.2009, um 17:38
Hallo,
da ich ein Neueinsteiger ibn ins ZF bin ich mal gespannt in wie weit es mir dabei hilft mich einzuarbeiten :)
Bisher war mein Liebling immer noch das Wordpad und damit kam ich die letzten Jahre auch super klar, nun mal sehn was Zend so kann freu mich drauf und auf das Buch,
vielen Dnak für die Arbeit und dne Support :)
Montag, 28.09.2009, um 12:54
Hallo Ralf,
ich bin verzweifelt auf der Suche nach einer Lösung, kann dazu leider weder auf der Zend Framework Webseite noch im deutschen Forum http://www.zfforum.de etwas brauchbares finden.
Wie im Buch auf S. 189 beschrieben verwende ich Zend_Acl mit Zend_Config, sprich die ACL befindet sich in einer INI-Datei. Nun würde ich gerne “Vererbung” nutzen, so dass ich nicht für jede Rolle immer wieder alle möglichen Seiten angeben muss.
Bsp.
user erbt von guest
moderator erbt von user
administrator erbt von moderator
Doch wie muss sowas in der INI-Datei dann tatsächlich aussehen, dass das auch funktioniert?
Gruß
Pascal
Samstag, 07.11.2009, um 10:24
[...] Auch wenn es viele bereits kennen, möchte ich (Ralf Eggert) an dieser Stelle mein eigenes Buch “Das Zend Framework: Von den Grundlagen bis zur fertigen Anwendung” kurz vorstellen. Es ist Anfang 2009 erschienen und basiert auf der bei Drucklegung aktuellen Zend Framework Release 1.7.4. Es reißt die neuen Komponenten Zend_Application und Zend_Tool (aus dem Release 1.8) nur an und eine last minute Änderung in 1.8 im Zend_Loader konnte ebenfalls nicht berücksichtigt werden. Die begleitende Website ist unter http://www.zendframeworkbuch.de zu finden. Dort finden sich auch die aktualisierten Skripte für das 1.8 Release. [...]
Montag, 27.12.2010, um 01:31
Also an erster Stelle möchte ich sagen, dass du ein Klasse Buch veröffentlicht hast. Die Sprache ist humorvoll und unterhaltsam. Ich habe es gestern angefangen zu lesen und komm einfach nicht von weg, weil es sehr informativ ist, und dabei keineswegs zu trocken. Doch an dieser Stelle muss ich auch eine Kritik äußern, und da schließe ich mich Pascal an. Das Buch fällt anscheinend nicht in die Kategorie “Learning by Doing”, was meiner Meinung nach gerade bei einem solch umfangreichen Framework den Einstieg enorm erschwert. Ich hätte es um einiges besser gefunden, wenn der zweite Teil des Buchs mehrere kleine Webapplikationen zum nachbauen mit detaillierter Erklärung geliefert hätte. Denn was kann ich jetzt von Teil II erwarten, wenn ich gerade so mit Ach und Krach “Luigis Pizza” zum Laufen bekommen hab, war ja schließlich alles noch neu, und jetzt beginnt schon eine Auflistung ettlicher Komponenten des Frameworks, womit ich größten Teils nix anfangen kann. Naja, ich setz mich jetzt wieder an das Buch, denn spannend geht’s weiter.
Danke
Montag, 27.12.2010, um 04:53
P.S.: Es wäre in meinen Augen definitiv eine Bereicherung für das Buch gewesen, wenn Teil I wenigstens 1-2 Kapitel mehr gehabt hätte. In diesen hätte man dann vllt noch ein Kontaktformular, ein Gästebuch und/oder einfach nur eine Website mit einer simplen Navigationsleiste erklären können, quasi 2 kleine Webapplikationen mehr. Das hätte das Buch vllt um 20 Seiten schwerer gemacht, aber dafür das Verständnis um so mehr erleichtert.
Gruß
Adnan
Donnerstag, 14.07.2011, um 08:03
Ich war Anfangs schon etwas verzweifelt, dass kaum eines der Quellcodes tatsächlich funktionieren – gerade als Einsteiger im ZF war dies ganz schön demotivierend. Daher ein großes Dankeschön für die Anpassung sämtlicher Quellcodes!
Hat die controllers/plugins/LocaleSetup.php bzw. views/scripts/index/sitebar.phtml der Beispielanwendung aus Kapiel 19 eventuell einen Fehler oder zu mindest ein fehlendes Feature? Wenn man die Sprache umstellt, wird nicht die aktuelle Seite “übersetzt”, sondern der Besucher wird immer auf die Startseite (/index/index) umgeleitet.