Christopher: Persistenzgenerator

Beitrag lesen

Guten Abend die Herrschaften,

ich habe gerade damit angefangen, mir einen Persistenz-Generator(*)
unter PHP zu schreiben - bzw. meinen urspruenglich unter Java
geschriebenen Generator nach PHP zu mirgrieren. Die Migration
nach .NET kann ich bereits als "erfolgreich" titulieren ;-)

Und nun stolper ich ueber etliche OOP-Maengel seitens PHP, welche
die Aufgabe - zumindest noch derzeit - schirr unmoeglich erscheinen
leasst.

PHP ist wirklich eine Qual fuer objektorientierte Programmierer!
Allgemeine Sachen wie Vererbung, Polymorphie, Typsicherheit,
Klassenhirarchien und -Abstraktion erweisen sich als absolut
grov varlaessig oder bis hin zu teilweise gar unmoeglich.

Jedes Mal stosse ich unter php.net auf Userbeitraege, die mir
erzaehlen wollen, dass ich ein ENUM doch tatsaechlich mit einer
finalen Klasse und Konstanten zu realisieren habe.

Hilfe! Das kann es doch wohl echt nicht sein!
Mir graust's!

Was fuer Loesungen gibt es nun? Soll ich darauf warten, dass PHP6
bald erscheint und dieses _hoffentlich_ (zB) Enums kennt - oder
zumindest nicht gleich wegrennt wenn es um Typsicherheit geht?
Oder sollte ich die Migration sogar komplett lassen?
..ich bin frustriert!

Gruesse
Christopher

(*) Er baut mir anhand einer vorhandenen Datenbank die daraus
resultierenden Persistenzobjekte (POs) und die sich davon
abstrahierenden Persistenzadapter (PAs). Dieses geschieht zum
einen anhand der Tabellen/Spalten-Eigenschaften (auto_increment,
FKs, PKs, so fern INNO_DB auch referentielle Integritaet), als
auch ueber ein manuell erweiterbares Konfigurationsfile. Die
jeweiligen Spalten-Typen werden zu Datentypen gemappt, deren
Setter-Methoden darauf achten, ob auch die korrekten, d.h.
erlaubte Werte gesetzt werden (Typ, length, nullable, etc..).
Aehnlich wie Hibernate kann man sich das ganze in
etwa vorstellen.
Es gibt einheitliche Methoden fuer Retrieve, Insert, Update und
Delete. UserPO.Update() reicht zum Beispiel aus, um ein
User-Objekt zu persistieren bzw. upzudaten. Oder man kann zB
mittels User.Retrieve(Condition condition) eine Liste von
Benutzern aus der Datenbank lesen.

PS: Waehrend des schreibens bin ich tatsaechlich noch stinkiger
auf PHP geworden.. grr. Ich glaube ich lasse dass mit dem Mirgrieren
und werde einfach meinen Java-Generator um PHP-Templates erweitern.
Dann laeuft das ganze zwar nur mit der Voraussetzung, dass man
Java installiert hat, jedoch sollte das wohl eine mindere Huerde
darstellen.