Aiun Geschrieben 18. August 2005 Teilen Geschrieben 18. August 2005 habe gerade eben news über PHP5 und PDO (PHP Data Objects) gelesen, letztlich scheint mir das ganze etwas zu sein, das viele Entwickler schon länger verwenden...nur das sich das bisher jeder selbst gebastelt hat. Zusammengefasst: PDO's abstrahieren die Datenbank-spezifischen Funktionen, so das im eigentlichen Quelltext kein DB-spezifischer Kram mehr auftaucht. Daher mal eine Frage: Was haltet ihr von Abstraktionsschichten, wie würdet ihr sie umsetzen ? Ich habe beim Surfen jetzt mehrere Modelle gesehen und hier das Modell das ich verwende (selbst gecoded): Das Modell hat 3 Komponenten, zum einen eine Klasse Datamodel, welche meistens den Einstieg bietet. Zum zweiten Entitäts-Klassen die jeweils eine Tabelle abbilden (nur lesen) und als letztes Controller-Klassen die Änderungen an ein oder mehreren Tabellen durchführen, je nach Aktion. Die Entitätsklassen erhalten von mir im Konstruktor den Primärschlüssel, laden dann ihre Attribute aus der Datenbank, oder wenn es sich z.B. um längere Texte handelt aus einer Datei. Darüberhinaus stellen sie Methoden zur Verfügung um entlang eines Fremdschlüssels zu Navigieren. Also z.B. die Klasse Forum_Post hätte eine Methode getThema() gleichzeitig gibt es für Forum_Thema eine Methode getPosts, welche ein DataModel Objekt zurückgibt, das bereits mit einem vorbereiteten Select gefüllt ist. die DataModel-Klasse bekommt in der wichtigsten methode folgende parameter: - gewünschte Entitäten - Filter (where) - Sortierung (order by) - Mengenbegrenzung (Mysql: Limit) mit einer anderne Methode getEntity(..) kann ich mir dann jeweils das Objekt einer Entitätsklasse geben lassen. Leider hat das ganze noch einen Haken bezüglich Joints unsw. aber vielleicht löse ich das noch irgendwann. Wenn sich also die Datenbank verändern würde, auf ein anderes DBMS, oder gar einige Variablen in Dateien ausgelagert würden, währe das kein Problem. Nur DataModel, Entities und Controller müssten ausgetauscht werden. z.Z. überarbeite ich auch eine weitere Klasse, die nocheinmal darunter liegt und mir insert & Update-Statements zusammenbaut...aber ich bin noch nicht sicher wie viel sinn es hat die auch auf Selects auszudehnen. Andere Modelle geben den Entitäten oft selbst die Möglichkeit sich zu verändern, finde ich selbst schrecklich, da dabei verwirrung auftreten kann, was nun wirklich in der Datenbank steht und was nur PHP-Seitig ins Objekt eingefügt wurde. also nochmal: was nutzt ihr so ?, was haltet ihr davon im allgemeinen, was haltet ihr von meinem Modell ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 18. August 2005 Teilen Geschrieben 18. August 2005 Leider hat das ganze noch einen Haken bezüglich Joints unsw. aber vielleicht löse ich das noch irgendwann. Wunschdenken? also nochmal: was nutzt ihr so ?, was haltet ihr davon im allgemeinen, was haltet ihr von meinem Modell ? Ich nutze http://www.hibernate.org , ist allerdings für Java. Generell sollte man bei größeren Projekten seine Datenhaltung immer abstract halten und in einer eigenen Schicht verwalten. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 18. August 2005 Teilen Geschrieben 18. August 2005 Daher mal eine Frage: Was haltet ihr von Abstraktionsschichten, wie würdet ihr sie umsetzen ? also nochmal: was nutzt ihr so ?, was haltet ihr davon im allgemeinen, was haltet ihr von meinem Modell ? um auf verschiedenartige datenbanken zuzugreifen, hab ich lange zeit die PHPLib verwendet, das ging zumindest bei umstellungen nach mysql, oracle, sql server und postgres immer relativ glatt. es musste auch hier immer nur eine einzige datei ausgetauscht, bzw. der aufruf eines require, include o.ä. geändert werden. class DB_blabla extends DB_Sql { var $Host = "localhost"; var $Database = "test"; var $User = "kk"; var $Password = ""; } das ging zumindest mit php 3 und 4 immer gut, bei php 5 weiss ich nicht, ob das noch der bevorzugte programmierweg ist :floet: allerdings schreib ich nur noch selten sachen in php und hab mich mit der 5er version noch nicht auseinandergesetzt. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.