ADBo mit PHP

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von macddict, 18.11.2005.

  1. macddict

    macddict Thread Starter MacUser Mitglied

    Beiträge:
    209
    Zustimmungen:
    5
    MacUser seit:
    20.02.2005
    Habe ein Frage:

    Welchen Sinn hat die Verwendung eines Datenbankabstraktionsklasse wie z.B. adodb in php bei kleineren Projekten?

    Baue ein kleines CMS und frage mich ob ich sowas wohl einsetzen sollte...das CMS soll definitiv nur auf MySQL laufen.
     
  2. timbajr

    timbajr MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    wenn es nur auf mysql laufen soll und du dir sowieso dann deine eigene DB-Abstraktionsschicht baust, brauchst kein adodb.
     
  3. macddict

    macddict Thread Starter MacUser Mitglied

    Beiträge:
    209
    Zustimmungen:
    5
    MacUser seit:
    20.02.2005
    warum brauche ich eigentlich so eine schicht..ich meine codemäßig es gleich ob ich jetzt einfach "$query = "123";$result=mysql_query($query);" schreibe oder "$db->connect();$db->query($query)" schreibe...
     
  4. timbajr

    timbajr MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    aus dem einfachen grund, dass wenn du z.B. Änderungen an den Tabellenstrukturen vornehmens willst (z.b. hinzufügen eines Attributs) dass du nicht alle deine Skripte nach Querys durchsuchen musst, die auf die entsprechende Tabelle zugreifen. Du speicherst einfach nur noch Objekte in DB und musst für das Speichern und Zugreifen immer nur Code an einer Stelle ändern...wenn du natürlich nie was ändern wilslt (was wohl eher nicht vorkommt) dann kannst es auch im Code schreiben. nachdem normalerweise jedoch 80% der Kosten bzw. des Aufwands aufs Maintaining von Systemen entfällt, lohnt es sich den Code wartbar zu schreiben :)

    achso du würdest dann ja nicht an das $db Objekt die Query übergeben, sondern ein Objekt erzeugen, dass deine Objekte speichern kann. In diesem sind dann die Querys gekapselt. Abgesehen davon, können damit Verbindungsinformationen viel leichter zentral abgelegt werden.
     
    Zuletzt bearbeitet: 18.11.2005
  5. macddict

    macddict Thread Starter MacUser Mitglied

    Beiträge:
    209
    Zustimmungen:
    5
    MacUser seit:
    20.02.2005
    danke für die erklärung. du meinst also statt aus einen feld was auszulesen würdest du dann nicht "SELECT feld1 FROM tabelle...$foo = resultrow["feld1"];" mit entsprechendem query schreiben, sondern "$foo->getFeld()" als objekt, oder ? (bitte syntax nicht ernstnehmen :D)
     
  6. timbajr

    timbajr MacUser Mitglied

    Beiträge:
    574
    Zustimmungen:
    26
    MacUser seit:
    22.04.2005
    also dazu gibts ja nen haufen literatur...

    prinzipiell würde ich das folgendermaßen gestalten:
    du machst dir eine schicht die mit der datenbank kommunziert und für jedes deiner zu speichernden objekte legst du objekte an, die das entsprechende objekt speichern können bzw. aus der DB erzeugen können...

    also z.B. $a = new ObjektX(5) würde dann ein ObjektX dir erzeugen, dass z.B. die ID 5 hat. der Konstruktor dieses Objektes würde sich dann mit der DB verbinden und das entsprechende aus der DB lesen.
    du operierst dann nur noch auf diesem Objekt, also $a->gibAttributY()

    so meine ich das, verstanden ?
     
  7. macddict

    macddict Thread Starter MacUser Mitglied

    Beiträge:
    209
    Zustimmungen:
    5
    MacUser seit:
    20.02.2005
    viele dank für die hinweise. bin jetzt grad dabei alles auf Klassen umzustricken, d.h. für jede Haupttabelle eine Klasse in PHP.

    Habe mich vor OO bisher gescheut, aber sehe jetzt das es die Verwaltung von DBs DEUTLICH einfacher macht. Auf jeden Fall kann ich mir einiges an Schreibarbeit sparen :D
     
  8. michanismus

    michanismus MacUser Mitglied

    Beiträge:
    434
    Zustimmungen:
    0
    MacUser seit:
    23.08.2004
Die Seite wird geladen...