phpbar.de logo

Mailinglisten-Archive

[php] Dynamische Klassennamen

[php] Dynamische Klassennamen

Sebastian Mendel lists at sebastianmendel.de
Die Mar 8 13:25:40 CET 2005


Sorin Marti wrote:
> Ciao Sebastian,
> 
>> 'eine'? Persistenzschicht?? welche dieser 3 Schichten bezeichnest du 
>> denn als 'Persistenzschicht'? oder fasst du alle 3 Schichten zur 
>> 'Persistenzschicht' zusammen?
> 
> Datenzugriffsschicht, also eine Persistenzschicht.
> 
> 
>> wieso Braucht man dafür ein 'Persistenzes' Objekt?
> 
> Du verstehst den Begriff (so glaub ich) falsch. Das Objekt das Du hast 
> soll persistent gemacht werden (also gespeichert, damit wieder abrufbar 
> --> ergo Datenbank o. Datei). Du brauchst nicht ein spezielles Objekt, 
> sondern musst das bestehende in einer persistenten Form abbilden.

Ja, hast recht, aber hab ich ja gesagt, nicht das ich den Begriff falsch 
verstanden habe, sondern überhaupt nicht. Aber jetzt hab ich verstanden 
was du damit meinst.


>> ich habe eine Klasse DbObject, diese beinhaltet alle Eigenschaften und 
>> Methoden die ein Objekt welches in einer DB gespeichert wird, 
>> beinhaltet. z. B.: id, name, last_change, date_created, load(), 
>> save(), insert(), update(), getId(), setId(), getName(), ...
>>
>> Diese Klasse erweitere ich einfach z. B. Contact extends DbObject, 
>> dabei erhält die Klasse halt weitere Eigenschaften ( street, city, 
>> zip, ...) und eventuell weitere Methoden
> 
> voilà! Da hast Du bereits einen Persistenz-Mechanismus. Wenn Objekte 
> aber komplexer werden (über mehrere Tabellen zum Beispiel), musst du die 
> Methoden load(), save(), insert(), update(), getId(), setId(), getName() 
> überschreiben, oder aber du lässt sie dir generieren.

ja, mach ich ja


> Dann heisst es halt: Customer extends PersistentCustomer , wobei der 
> PersistentCustomer die load(), save(), insert(), update()-Methoden 
> übernimmt.

ja, ich hab halt kein 'Persistant' irgendwo (in den Namen)


>> was bitte machst du nun anders (was sich bisher für mich nur 
>> komplizierter anhört) und vor allem wo liegt bei dir der Vorteil?
> 
> Der Vorteil liegt darin, dass Du bei grossen Projekten Millionen von 
> Zeichen nicht selbst schreiben musst.

naja, die Frage erübrigt sich natürlich nun, den Vorteil kenn ich ja,


> Das funktioniert so: Du hast Du eine XML-Datei, die das mapping macht 
> (die Klassenvariabeln zu Datenbankfeldern mappt; vereinfacht gesagt). 
> Die Datenbank kann sich beliebig ändern, das Objekt kann sich beliebig 
> ändern, alles was Du machst ist die XML-Datei anpassen, neu generieren 

das ist die Sache die mir noch fehlt, allerdings werde ich das erst 
einbauen wenn ich PHP5 überall dort habe wo ich die Klasse verwende, 
dann werde ich auch __get() __set() verwenden zum setzen und überprüfen 
der Eigenschaften, hierfür bräuchte ich dann die besagte XML-Datei, bzw. 
würde ich diese Information direkt aus der DB holen (Variablen-Typ), 
denn wozu XML wenn ich eh schon ne DB verwende ...


> PS: Ich wäre sehr an Deiner DbObject-Klasse interessiert. Gibt es da die 
> Möglichkeit für einen Einblick?

na die ist eigentlich geheim ... ;-)
... ich schau mal ...



aber an welcher benötigst du da 'Dynamische Klassennamen' ?


-- 
Sebastian Mendel

www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive