dedlfix: OOP / MVC / Routing in Bootstrap-Prozess oder Front-Controller?

Beitrag lesen

Hi!

Man hat ja damals mit PDO angefangen, weil man sich so die einzelnen Adapter für die verschiedenen DBMSe sparen konnte. Vermutlich war man damit teilweise nicht so glücklich und/oder performant, so dass man dann doch noch separate Adapter hinzugefügt hat.
War PDO dafür gedacht, sich die Adapter sparen zu können? Ich bin da drüber nicht informiert, dachte aber, PDO sei entwickelt worden um eine "reibungslose" Migration von einem zum anderen DB-System bei gleicher Syntax zu ermöglichen? Oder ist das das gleiche?

PDO ist wie einige andere Systeme auch, in erster Linie eine DBMS-Abstraktion, vor allem um den Zugriff auf die unterschiedlichen DBMSe zu vereinheitlichen. Ansonsten hast du ja in PHP nur die nativen DBMS-Funktionen, die sich in Umfang und Bedienweise recht erheblich voneinander unterscheiden. PEAR-DB war ein Versuch, mit PHP-Code den Mischmasch unter einer einheitlichen Oberfläche zu verstecken. Damals gab es noch kein PDO, weswegen da für jedes DBMS ein eigener Adapter/Driver gebaut werden musste. Das ZF konnte sich da zu Anfang schon auf PDO stützen und sich zunächst die individuellen Adapter sparen. Und auch jetzt sind nur einige wenige Adapter hinzugekommen - die anderen DBMSe muss man mit dem PDO-Adapter bedienen.

In der Praxis ist es meist deutlich weniger sinnvoll und überhaupt ein Anwendungsfall, zu einem anderen DBMS zu migrieren, als dieses immer als Argument für eine Abstraktionsschicht herhalten muss. Die Schichten, die sich unterhalb des Tabellen-Levels bewegen, sind hauptsächlich als Vereinheitlichung der Zugriffsweise zu sehen. Jedes DBMS spricht einen anderen SQL-Dialekt. Wenn man wirklich migrieren können will, muss man sich ziemlich in der verwendbaren Syntax einschränken. Man nivelliert damit alle Systeme auf einen sehr niedrigen Wert hinunter. Auf ein anderes System zu wechseln, bringt nur noch dann einen Vorteil, wenn sich Kosten sparen lassen oder bei ähnlich allgemeinen Gegebenheiten. Der bessere/andere Funktionsumfang kann dann nicht mehr genutzt werden.

Sollte es nicht das gleiche sein, wäre das für mich sicher eine Überlegung wert PDO nicht zu verwenden, da dies ja wieder auf grundsätzliche Design-Fehler schließen lassen würde.

PDO und jede andere Abstraktion kannst du verwenden, wenn es dir wert ist, eine einheitliche Oberfläche zu bekommen, dafür aber deren Overhead und den teilweise geringeren Funktionsumfang eines nativen Treibers in Kauf zu nehmen.

Mein Problem hierbei ist, dass ich es an verschiedenen Stellen der Anwendung immer wieder anders machen könnte, sodass es nachher unübersichtlich wird.
Das liegt in deiner Verantwortung als Programmierer. Ob es sinnvoll ist, dass sich das ZF nur auf eine Weise festlegt, wo doch viele Anwender unterschiedliche Wünsche haben können? Selbst wenn es nur eine Methode gäbe, könntest du noch genügend Inkonsistenzen in deine Anwendung einbauen.
Ja, leider. Und genau dafür habe ich so eine Vorliebe... ;-)

Wie heißt es so schön: Es ist noch kein Meister vom Himmel gefallen. Jeder, auf den du jetzt (noch) aufblicken kannst, hat ähnliche Leichen im Keller, garantiert.

Lo!