Hallo zusammen,
ich habe etwa folgende Situation...
Ich habe ein Form-Objekt, bei dem ich über register() Form-Elemente registrieren kann.
Und ich habe Datenobjekte, die in eine Datenbanktabellenzeile repräsentieren und in denen grundsätzlich auch genug Infos hinterlegt sind, um daraus ein passenden Form-Element zu erzeugen:
Naja, und jetzt suche ich nach einer Best Practise Lösung für ein solch artiges Problem. Ich habe hier neben mir Head First Design Patterns liegen und mal durchgeblättert. Ich möchte hier nicht auf Teufel komm raus irgendein Pattern anwenden, aber ich habe mir gedacht, dass es für sowas doch sicher schon einen guten Weg gibt.
Die Pattern, bei denen ich Länger als eine Sekunde überlegt habe, waren das Adapter-Pattern, aber ich möchte ja das Daten-Objekt nicht wie ein Form aussehen lassen. Das Decorator-Pattern würde ja zum Form-Objekt zusätzliche Funktionalität hinzufügen, aber ich möchte ja nicht Funktionalität dranhängen, sondern quasi Daten. Joa, und der Rest ist eigentlich sofort ausgeschieden.
Dann habe ich mal selbst meinen Kopf angestrengt, wie man das am Besten angeht.
Eine Methode a la addElementsFromDataObject() am Form-Objekt wäre mMn nicht gut, da dann ja das Form-Objekt weiss, welche Objekte es hat - aktuell weiss es ja nur, dass es FormElement-Objekte hat.
Ich habe noch an ein Translator-Klasse gedacht, die das Form-Objekt und das Daten-Objekt übergeben bekommt, und dann am Form-Objekt die Form Elemente anhängt, aber irgendwie bin ich davon auch noch nicht überzeugt.
Die letzte Idee war am Daten-Objekt eine Methode hinzuzufügen, die ein Array (oder ein Collection-Objekt mit Objekte, Stilfrage, oder?) mit den entsprechenden FormElement-Objekten erzeugt und zurückgibt. Danach entweder über eine Schleife am Form registriert werden oder mit einer registerFromArray()-Methode
Wie würdet ihr das angehen, damit die Objekte nicht mehr wissen, als sie wissen müssen.
Danke und viele Grüße!
ich habe etwa folgende Situation...
Ich habe ein Form-Objekt, bei dem ich über register() Form-Elemente registrieren kann.
Und ich habe Datenobjekte, die in eine Datenbanktabellenzeile repräsentieren und in denen grundsätzlich auch genug Infos hinterlegt sind, um daraus ein passenden Form-Element zu erzeugen:
PHP-Code:
// Form::register(FormElement $element)
$form = new Form('form_identifier');
$form->register(new InputField('...'));
$obj = new SomeDataObject();
// und die die magische Zeile...
Die Pattern, bei denen ich Länger als eine Sekunde überlegt habe, waren das Adapter-Pattern, aber ich möchte ja das Daten-Objekt nicht wie ein Form aussehen lassen. Das Decorator-Pattern würde ja zum Form-Objekt zusätzliche Funktionalität hinzufügen, aber ich möchte ja nicht Funktionalität dranhängen, sondern quasi Daten. Joa, und der Rest ist eigentlich sofort ausgeschieden.
Dann habe ich mal selbst meinen Kopf angestrengt, wie man das am Besten angeht.
Eine Methode a la addElementsFromDataObject() am Form-Objekt wäre mMn nicht gut, da dann ja das Form-Objekt weiss, welche Objekte es hat - aktuell weiss es ja nur, dass es FormElement-Objekte hat.
Ich habe noch an ein Translator-Klasse gedacht, die das Form-Objekt und das Daten-Objekt übergeben bekommt, und dann am Form-Objekt die Form Elemente anhängt, aber irgendwie bin ich davon auch noch nicht überzeugt.
Die letzte Idee war am Daten-Objekt eine Methode hinzuzufügen, die ein Array (oder ein Collection-Objekt mit Objekte, Stilfrage, oder?) mit den entsprechenden FormElement-Objekten erzeugt und zurückgibt. Danach entweder über eine Schleife am Form registriert werden oder mit einer registerFromArray()-Methode
Wie würdet ihr das angehen, damit die Objekte nicht mehr wissen, als sie wissen müssen.
Danke und viele Grüße!
Kommentar