dedlfix: Zend 2

Beitrag lesen

Tach!

gut, dann versuche ich mich an die Standards zu halten und definiere folgendes

index.php?id=12345

include "path/to/file/tecdoc.class.php";

$doc = new TecDoc(intval($_GET['id']));
$doc -> displayForm();

  
Wenn du aber so herangehst, ignorierst du das MVC-Muster und die Möglichkeiten des Zend-Framework. URL-Parameter wertet man nicht direkt aus, die extrahiert der Router aus dem Request und stellt sie bereits fertig zur Verfügung. Gegebenenfalls musst du noch eine Routing-Regel konfigurieren, wenn du nicht die per Default vorgesehene URL-Struktur verwenden magst/kannst.  
  
Es kann zwar Klassen geben, die eine HTML-Ausgabe erzeugen, aber das ist eigentlich Aufgabe der View (das V in MVC). Wenn die Ausgabe komplexer wird, kann die View sich eines Helpers bedienen, um zum Beispiel eine Tabelle zu erstellen oder ein Formular. Der wiederum bekommt seine Daten direkt von der View. Wenn das eine Nutzereingabe ist, geht die den Weg vom Router über den Controller zur View. Allerdings ist das selten so der Fall. Eher fragt der Controller ein Model, um die gewünschten Daten zu beschaffen (oder gemäß der Geschäftslogik zu verarbeiten und zu speichern). Der Controller selbst arbeitet idealerweise nicht, der delegiert nur.  
  

> Das Objekt $doc hatte ich mit einem Parameter initialisiert(?). In jQuery bin ich gewohnt, eine Instanz mit Parametern zu bilden. In den PHP5-Beispielen, die ich mir so ansehe, wird da kein Parameter übergeben. Um das Ganze ohne Parameter-Übergabe beim initialisiert(?) zu regeln könnte man das so lösen:  
> `public $id = intval(GET['id']);`{:.language-php}  
> Aber macht man das so?  
  
Mal unabhängig vom ZF geantwortet, es gibt Konstruktor-Funktionen (landläufig auch nur als Konstruktor bezeichnet), die beim Instantiieren aufgerufen werden, wenn sie vorhanden sind. Die können auch Parameter entgegennehmen.  
  
  
dedlfix.