split.s: SQL Abstract für php?

Ich experimentiere seit ein paar Stunden mit PHP herum.
Gibts für PHP auch sowas wie SQL::Abstract für Perl?
Ich finde die Statements immer so unpraktisch wenn man mal etwas ergänzen will.

In SQL::Abstract gab es ja solche schönen Sachen wie

  
my @tables (  
   'users'  
);  
  
my @fields = (  
   'id', 'name', 'birthday'  
)  
  
my %where = (  
   'sex'   => 'm'  
);  
$sql->selec(\@tables, \@fields, \%where);  
  
# Ergebnis:  
SELECT id, name, birthday FROM users WHERE sex = 'm'  

Das hatte immer den Vorteil, dass man später mal nochetwas zufügen konnte:
z.B:

  
if ($UserInput eq 'only_users_width_photo') {  
   $where{'photo'} = 1;  
}  

Gibts solche Frameworks auch für PHP oder muss ich jetzt diese hässlichen Statements ausschreiben und wenn ich in ein Statement später etwas einfügen oder löschen will, den ganzen String zerlegen?

  1. moin,

    Gibts solche Frameworks auch für PHP oder muss ich jetzt diese hässlichen Statements ausschreiben und wenn ich in ein Statement später etwas einfügen oder löschen will, den ganzen String zerlegen?

    OOP bietet einen Ausweg aus solchen Situationen. Betrachte jedoch nicht die Programmiersprache als Objekt, sondern das Ergebnis, hier das Ergebnis einer Query. Dein Code wird übersichtlich, bekommt klar definierte Schnittstellen und bleibt scalierbar.

    Viele Grüße,
    Rolf

  2. Hi!

    Gibts für PHP auch sowas wie SQL::Abstract für Perl?

    Ja, wenn ich anhand deines Beispiels die Arbeitsweise richtig verstanden habe, ist das sowas wie ein ORM, Table Data Gateway oder Data Access Object. Einige Frameworks bringen so etwas mit, beispielsweise das Zend Framework.

    Lo!

    1. Wenn ich dich richtig verstehe meinst du sowas wie auf
      http://framework.zend.com/manual/en/zend.db.select.html
      beschrieben wird.
      Klingt interessant! Danke für den Tipp!

      1. Hi!

        Wenn ich dich richtig verstehe meinst du sowas wie auf http://framework.zend.com/manual/en/zend.db.select.html beschrieben wird.

        Naja, das ist ja nur ein Select-Statement-Zusammenbauer und dient vermutlich nur der Abstraktion von DBMS. Du machst damit nur SQL mit OOP-Syntax. Das bringt dann Vorteile, wenn man DBMS-unabhängig programmieren will, aber sooo oft braucht man das nicht? Mehr Abstand zum DBMS bekommst du mit ORMs, dann kannst komplett ohne zu wissen, wie ein SQL-Statement aufgebaut wird, auf die Daten zugreifen.

        Lo!