phpbar.de logo

Mailinglisten-Archive

[php] Dynamische Klassennamen

[php] Dynamische Klassennamen

Sebastian Mendel lists at sebastianmendel.de
Die Mar 8 12:27:39 CET 2005


Sorin Marti wrote:

> In der Objektorientierten Programmierung gibt es das Prinzip der 
> Schichtenarchitektur. Oft werden 3 oder 5 Schichten kreiert. Diese 
> Schichten arbeiten unabhängig voneinander und sind auswechselbar. Die 
> Trennung ist bei 3 Schichten oft das GUI (UserInterface), die 
> Programmlogik und die Datenzugriffsschicht, also eine Persistenzschicht.

'eine'? Persistenzschicht?? welche dieser 3 Schichten bezeichnest du 
denn als 'Persistenzschicht'? oder fasst du alle 3 Schichten zur 
'Persistenzschicht' zusammen?


> Persistente Objekte sind Objekte, die nach "Gebrauch" erhalten bleiben 
> sollen, zum Beispiel Userinformationen. Das heisst, das das User-Objekt 
> in einer Datenbank (oder wo auch immer) gespeichert werden soll. Nun 
> muss eine Art mapping geschehen, das das Objekt so "ummodelt", dass es 
> in die Datenbank geschrieben werden kann. Man spricht bei diesem Prozess 
> von "Object relational mapping" (ORM).
> Nun sind die Mechanismen, die save-, update-, delete-, und 
> retrieve-Funktionalität bereitstellen, für jedes Objekt im Prinzip 
> gleich. Damit also nicht jedesmal eine Persistenz-Klasse geschrieben 
> werden muss, kann sie generiert werden.
> Es gibt (vor allem für Java, vereinzelt für C++) diverse Tools, die das 
> generieren für Dich übernehmen. Beispiele sind zum Beispiel Hibernate 
> [1] und Torque [2].
> Die Persistenz-Problematik ist in der OO-Welt ein grosses Thema, google 
> bringt zu ORM viele interessante Resultate. Da in PHP mit der Version 5 
> auch OOP möglich ist, werden diese Mechanismen auch in PHP über kurz 
> oder lang eine Rolle spielen.

ja, aber wieso Braucht man dafür ein 'Persistenzes' Objekt?

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

das geht dann bei Bedarf weiter Customer extends Contact ...

brauche ich jetzt ein solches Objekt lade ich es einfach:

// laden des Kunden mit der Kundennummer 1625
$kunde = new Customer( 1625 );


eventuell werden solche Objekte, wenn sie länger gebraucht werden, in 
$_SESSION gespeichert


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?


-- 
Sebastian Mendel

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

php::bar PHP Wiki   -   Listenarchive