Klassenproblem
sebastian
- php
Hi,
habe derzeit die Situation, dass ich eine Klasse hab, die Methoden bereitstellt, um Output zu erzeugen.
Nun soll diese Klasse - ich nen sie einfach mal Modul - eine View Klasse haben, die ein Template in einem Ausgabe Puffer einbindet und dann das erzeugt zurückgibt an das Modul.
Nun gibt es mehrere Templates und die sollen jeweils die Methoden des Moduls verwenden.
Wenn ich jetzt aber das Template includiere, befinde ich mich ja in der view Klasse, also würde $this->xxx(); ja nicht auf die Methoden vom Modul zugreifen, sondenr von deriKlasse.
In der View Klasse ein Objekt des Moduls zu erstellen, wäre twar ne funktionierende Lösung, aber vollkommen unaltagstauglich und sinnlos.
Wie geht das??
Die View Klasse ist ja genormt, die Modul Klasse ist immer anders, von daher kann ich auch nicht mit extends Modul arbeiten, oder??
Gruß Sebastian
Hello,
Nun soll diese Klasse - ich nen sie einfach mal Modul - eine View Klasse haben, die ein Template in einem Ausgabe Puffer einbindet und dann das erzeugt zurückgibt an das Modul.
Soll sie eine eigene View-Klasse 'haben' oder soll sie von einer View-Klasse erben oder soll sie einfach eine für alle Klassen zugängliche View-Klasse benutzen?
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Soll sie eine eigene View-Klasse 'haben' oder soll sie von einer View-Klasse erben oder soll sie einfach eine für alle Klassen zugängliche View-Klasse benutzen?
Die Modul Klasse soll eine, für alle zugängliche, View Klasse haben. Diese View Klasse soll dann das Template für das Modul laden, jedoch soll das Template zugriff auf die Methoden des Modules haben.
Gruß Sebastian
echo $begrüßung;
In der View Klasse ein Objekt des Moduls zu erstellen, wäre twar ne funktionierende Lösung, aber vollkommen unaltagstauglich und sinnlos.
Wieso erstellen? Einfach als Argument übergeben sollte es tun. Seit PHP5 werden ja von Objekten Referenzen übergeben und keine Kopien mehr.
Die View Klasse ist ja genormt, die Modul Klasse ist immer anders, von daher kann ich auch nicht mit extends Modul arbeiten, oder??
Das solltest du erläutern, denn keiner außer dir kennt deine derzeitige Implementation und deren Eigenschaften, die sich als Vor- oder Nachteil erweisen können. Generell gilt, dass X nicht auf Dinge von Y zugreifen kann, wenn es davon keine Ahnung hat. Man kann das so lösen, dass Y ein Interface implementiert, dessen Mitglieder dann von X aus angesprochen werden können. Oder man erstellt alle Y von einer Basisklasse, womit dann X zumindest auf die Mitglieder der Basisklasse zugreifen kann.
Wenn du View-Helper-Methoden (das vermute ich aus deiner Beschreibung) verwenden möchtest, warum siedelst du diese nicht in der Nähe der View an, statt beim Modul? Auch in der OOP hat sich die Trennung nach den Aufgabengebieten Eingabe, Verarbeitung und Ausgabe bewährt und sollte nicht ohne guten Grund aufgegeben werden.
echo "$verabschiedung $name";
Ich bin echt blöd drauf.
Ich kann ja einfach meiner Modul Klasse die View Klasse als Elternelement geben, im Modul Konstruktor den View Konstruktor aufrufen und dann geht das ganze wie ich es wollte.