PHP Sammelthread: Zend Framework und alles was dazugehört

ice-breaker

return void
ID: 93995
L
27 April 2006
6.257
585
Da Strolch schon nach einem eigenen Forum gefragt hat und erkannt hat, dass das Zend Framework immer mehr an Beachtung gewinnt und sich immermehr zu einem der (!) Enterprise-Framework etabliert hier nun ein eigener Thread für alle Fragen, Anregungen und Sonstiges.

Jeder ist herzlich Willkommen ;)

Wichtige Links:
:arrow: Download :biggrin:
:arrow: Reference Guide
:arrow: Api Documentation
:arrow: Zend Dispatch Prozess

Gute Einführungen:
:arrow: Quickstart-Guide
:arrow: Webcasts über das Zend Framework

Beispielprojekte: (aktuell)
:arrow: Dasprid's Webseite

Beispielprojekte: (veraltet)
:arrow: BugApp (scheint recht einfach zu sein)
:arrow: Pastebin (besonderer Augenmerk auf Dojo - recht komplex)

PoweredBy_ZF_4LightBG.png
 
Zuletzt bearbeitet:
Und wer stellt nun das gleiche mit PDO an damit ich wenigstens eingeschränkt mitreden kann?:ugly:

Sehr schön, muss ich mal sehn, was ich mit Zend alles anstellen kann und mich zumindest ein wenig einlesen:p

*API lesen geht*
 
neija du kannst ja von PDO auf Zend_Db switchen ;)
Der Umstieg ist sehr einfach, und es bietet viele Vorteile:

  1. automatisch alle bösen Variablen gesichert:
    PHP:
    $db->query('UPDATE table1 SET row1 = row1 - ?', $_POST['malicious']);
  2. datenbankunabhängig, da es viele Adapter gibt
  3. ganz einfach alle Daten lesen:
    PHP:
    $posts= $db->fetchAll("SELECT * FROM posts WHERE user = 'ice-breaker'");
  4. Wunderschönes Profiling von Datenbank-Querys, z.B. mit FirePHP:
    zf_firephp_profiler.png
  5. ORM
  6. DB-Querys erstellen ohne SQL-Syntax und somit komplett datenbankunabhängig: Zend_Db_Select
  7. und vieles vieles mehr ;)
 
Zuletzt bearbeitet:
Achtung!!! nichts für Schwache nerven ;)

Ich habe den Code mal ausgelagert weil es sonst, denke ich, zuviel geworden wäre. Mein Conzept bisher, lieber die Defaulteinstellungen der einzelnen Komponenten bei der Instanzierung mit zu geben, weil es so später leichter ist diese Optionen per Configdateien zu erweitern.

config Dateien:
Application
Cache
Controller
Database
Date
Error
Layout
Locale
Log
Session
Translate

Bootstrap Class:
bootstrap.php

Noch eine Anmerkung, die Klasse ist noch lange nicht fertig und in den Configdateien sind noch ein paar Kleinigkeiten zu machen.

Nur mal die Frage zum allgemeinen Konzept mit den Configdateien(split) usw., was haltet Ihr davon?

Zum Schluß einen besonderen Dank an Ice ;).

*edit
Mein Englisch ist nicht das beste entschuldigt bitte, und die fetsch Config ist so gestaltet das der user die Config Dateien unter dem Systemordner belässt und nur gewählte Configkey´s mit Seinen Dateien im Localconfigordner überschreiben muss,
 
Zuletzt bearbeitet:
  1. automatisch alle bösen Variablen gesichert:
    PHP:
    $db->query('UPDATE table1 SET row1 = row1 - ?', $_POST['malicious']);
  2. datenbankunabhängig, da es viele Adapter gibt
  3. ganz einfach alle Daten lesen:
    PHP:
    $posts= $db->fetchAll("SELECT * FROM posts WHERE user = 'ice-breaker'");

Hab' ich das nicht bereits in PDO?:-?


  1. Wunderschönes Profiling von Datenbank-Querys, z.B. mit FirePHP:
    zf_firephp_profiler.png

    (Bild von Christoph Dorn)

Sehr interessant! Muss ich mir unbedingt nochmal näher ansehen ;)


*auf morgen verschiebt*

  1. DB-Querys erstellen ohne SQL-Syntax und somit komplett datenbankunabhängig: Zend_Db_Select
  2. und vieles vieles mehr ;)

Sieht sehr schön aus, v.a. sehr strukturiert, doch muss man da nicht ein wenig umlernen?
Ich mein, im Moment hab' ich es noch ziemlich einfach, beschränke ich mich doch auf ziemlich simple JOINs u.U. Subquerys und einfache Klauseln, aber wie sieht es mit verschachtelten großen Querys (z.B. mehrere JOINs und Subquerys auf einmal) aus?

Und nochwas: Bietet Zend-Db ausser der syntaktischen Änderungen auch noch tieferliegendes (ausser der Adapter in dem Fall) wie performancetechnisches o.Ä.?

EDIT: Auweh, schon beim Ansehen der Klasse von Strolch werd ich erschlagen :-? Ich geh wieder lesen :p
 
Zu den Configs:
Also ich bevorzuge eher eine Config-Datei mittels XML.
Begründung? Man kann diese auch leicht dank Zend_Config_Writer mittels Adminbereich verändern und die Vererbung erlaubt mir das Produktivsystem und Development System in eine Config-Datei zu legen und Einstellungen von dem Produktivsystem an das Development-System zu vererben, wenn ich diese nicht ändern muss. Ein Beispiel:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<configdata>
	
	<production>
		<host>https://www.example.com</host>
		<database>
			<adapter>Pdo_Sqlite</adapter>
			<params>
				<dbname>../data/databases/database.sqldb</dbname>
			</params>
		</database>
		<password>mein-cooles-admin-pw</password>
	</production>
	
	<development extends="production">
		<host>https://localhost/example/</host>
	</development>
	
</configdata>

Nebenbei bemerkt finde ich persönlich es ziemlich unübersichtlich, wenn man die Config-Datei auf 100te Teile aufsplittet.

Zu der Bootstrap:
Die konstante ZF_VERSION kannst du dir sparen, dafür gibt es Zend_Version::VERSION ;)
Sonst ist die Kapselung der Bootstrap ganz nice, aber ich finde sie viel viel viel zu komplex.
Das Logging hat Unmengen Code, die getConfig wurschtelt irgendwie an dem Objekt herum (ein NO GO!), und die fetchFiles-Methode? spar dir das lieber und pack alles in eine Config, ist übersichtlicher und du sparst dir so eine Wurschtelei.
Der Bootstrapper sollte nicht aus viel mehr bestehen, wie einfach Objekte mit den richtigen Daten instanzieren, nicht großartig Code, oder Modifikationen von Config-Objekten.
Das Bootstrap-File aus dem Quickstart zeigt denke ich gut, wie simpel der Code sein kann.
 
Sieht sehr schön aus, v.a. sehr strukturiert, doch muss man da nicht ein wenig umlernen?
Ich mein, im Moment hab' ich es noch ziemlich einfach, beschränke ich mich doch auf ziemlich simple JOINs u.U. Subquerys und einfache Klauseln, aber wie sieht es mit verschachtelten großen Querys (z.B. mehrere JOINs und Subquerys auf einmal) aus?
Ja, man muss umlernen.
Möglich sollen auch komplexe Dinge sein, gibt einige, die darauf schwören,a ber persönlich ist es nicht mein Fall :biggrin:


Und nochwas: Bietet Zend-Db ausser der syntaktischen Änderungen auch noch tieferliegendes (ausser der Adapter in dem Fall) wie performancetechnisches o.Ä.?
kein Framework kann für dich Dinge einbauen, damit deine Datenbankabfragen schneller sind, das gehört in die DB-Optimierung und die muss man lernen, also Querys richtig formulieren und Datenbanken richtig planen.
Aber der Profiler hilft dir dabei deine schlechten Querys zu finden :biggrin:


EDIT: Auweh, schon beim Ansehen der Klasse von Strolch werd ich erschlagen :-? Ich geh wieder lesen :p
ja, also Strolchs Code erschlägt viel zu sehr, schau dir mal die Screencasts und den Quickstart Guide aus dem 1. Post an, das sind klasse Einleitungen.
 
Also gut, das sind genau die Dinge die mich auch schon störten aber ich dachte, es ist evtl übersichtlicher mit den gesplitteten Config´s.

Ich werde es nochmal neu coden und dann versuche ich das gleich mal mit dem Frontcontroller-Plugin zu realisieren. Mal sehen ob ich es schaffe.

Wenn ich net weiter komme weiß ich ja wohin ich mich wenden kann. ;)
 
Ja, man muss umlernen.
kein Framework kann für dich Dinge einbauen, damit deine Datenbankabfragen schneller sind, das gehört in die DB-Optimierung und die muss man lernen, also Querys richtig formulieren und Datenbanken richtig planen.

Das war mir klar, mir gings eher um die Performance des Frameworks an sich

ja, also Strolchs Code erschlägt viel zu sehr, schau dir mal die Screencasts und den Quickstart Guide aus dem 1. Post an, das sind klasse Einleitungen.

Jah, das hatte ich ohnhin vor, allerdings erst morgen, heute wars zuviel Info :biggrin:
 
Achja, letzte zwei Fragen: Was meint ihr: gesellige Runde mit gelegentlichen Zwischenfragen, oder reges Treiben in dem Thread hier?

Und 2.: Stellt Zend spezielle Anforderungen an den Server? Ja ich weiss ich hab nicht gelesen, aber komme grad nicht dazu :-?
 
Achja, letzte zwei Fragen: Was meint ihr: gesellige Runde mit gelegentlichen Zwischenfragen, oder reges Treiben in dem Thread hier?
ich denke ersteres.
Die meisten machen sich nicht die Mühe was neues zu lernen, sondern bleiben einfach bei dem was sie können, weil das passt schon irgendwie.

Und 2.: Stellt Zend spezielle Anforderungen an den Server? Ja ich weiss ich hab nicht gelesen, aber komme grad nicht dazu :-?
PHP 5.1.4 ist die minimale Anforderung, alles darüber ist natürlich besser.
 
ich denke ersteres.
Die meisten machen sich nicht die Mühe was neues zu lernen, sondern bleiben einfach bei dem was sie können, weil das passt schon irgendwie.

Ja, leider. Und wenn der Stand zu niedrig ist...:-?
Mir persoenlich ist das aber gar nicht zuwider, ich mag die Gesellschaft:biggrin:

PHP 5.1.4 ist die minimale Anforderung, alles darüber ist natürlich besser.

Ok sehr gut. Dann werd ich morgen einfach mal auf localhost herumtesten.:mrgreen:

Edit: *auf tH wartet*
 
Zuletzt bearbeitet:
Soo einer bist du also! Kannst dus denn und nutzt es nicht oder andersrum?
Ich kanns ned.
Ich bin schon mehrmals durch irgendwelche Links aufs Manual gestoßen, hatte aber noch nicht die Zeit und auch die Motivation, mich damit auseinander zu setzen.

Und jetzt wo ich lese, dass PHP 5.1.4 Mindestvoraussetzung auf dem Server is... ich hab erst neulich für wen ein
PHP:
if(!function_exists("file_put_contents")) {
  function file_put_contents($filename, $data) {
  // ...
schreiben müssen 8O :roll:

@Bekehrung:
Ich wurde schon mit Smarty bekehrt, also ist das jetzt nur noch eine Frage der Zeit. Allerdings hab ich im Moment diese Zeit nicht.
 
Und jetzt wo ich lese, dass PHP 5.1.4 Mindestvoraussetzung auf dem Server is... ich hab erst neulich für wen ein
PHP:
if(!function_exists("file_put_contents")) {
  function file_put_contents($filename, $data) {
  // ...
schreiben müssen 8O :roll:

Wenns nicht gerade ein notleidender VMSler ist, schreib ich sowas auch gar nicht mehr :biggrin:

@Bekehrung:
Ich wurde schon mit Smarty bekehrt, also ist das jetzt nur noch eine Frage der Zeit. Allerdings hab ich im Moment diese Zeit nicht.

Hmm, mit Smarty muss mich auch noch jemand bekehren:-?
 
ich hab was gefunden, was der große tH net kann *trallalatrallali* :ugly:


@Bekehrung:
Ich wurde schon mit Smarty bekehrt, also ist das jetzt nur noch eine Frage der Zeit. Allerdings hab ich im Moment diese Zeit nicht.
das schaff ich schon noch :biggrin:


Hmm, mit Smarty muss mich auch noch jemand bekehren:-?
Hmm, ja, also Smarty und Zf sind nicht ganz easy zu vereinen, aber es ist möglich, braucht eben nen Nachmittag :biggrin:
Kannst dir ja mal Zend_View ansehen, ist auch ne Art Tpl-System und geradezu optimal dank der ViewHelper für das Zf.
 
Empfiehlt es sich eigentlich dieses Zend Studio oder wie es heißt zu kaufen wenn man mit dem Zend Framework arbeitet?
Hat das dann spezielle Vorteile? Und ist Zend Studio sonst auch ganz gut für eine IDE?
Bin aktuell noch so ein Eclipse PDT Benutzer und richtig zufrieden :p