Zum Inhalt springen

[PHP] Abstraktionsebenen


Empfohlene Beiträge

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 ? :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...