Best Practice zum Organisieren von SQL-Abfragen im Code?

8

Ich habe eine Menge schönen OOP-Code, aber die Funktionen haben diese ungeheuer riesigen SQL-Abfragen. Sollten wir 2010 unsere Abfragen wirklich noch in-line schreiben oder gibt es eine Abstraktion, wie MVC, für SQL-Abfragen in PHP?

Danke für Ihre Einsichten.

Edit: Ich hätte das hier wahrscheinlich erwähnen sollen. Aber als professioneller PHP-Ingenieur würden Sie nicht glauben, wie oft ich auf ORMs gestoßen bin, die fürchterlich und (noch schlimmer!) ORMs richtig programmiert wurden, die absolut furchtbar funktionieren (besonders bei vielen-zu-vielen und vielen Join-Abfragen). Ich bin sehr negativ voreingenommen gegenüber ORMs, mit Ausnahme einiger einfacher ORMs wie Kohana .

Ich habe nach einem generischen Dynamic SQL Designmuster gesucht.

    
Theodore R. Smith 31.08.2010, 19:54
quelle

6 Antworten

8

Sie können Ihre Abfragen schreiben (auswählen, einfügen, aktualisieren, löschen, ...) in gespeicherten Prozeduren und rufen diese gespeicherten Prozeduren nur aus Ihrem PHP-Code heraus, anstatt Ihre Abfragen in Ihre PHP-Dateien zu schreiben.

eine gute Ressource zum Lernen gespeicherter Prozeduren in MySQL ist dieses Buch:

mysql Programmierung gespeicherter Prozeduren

    
rahim asgari 31.08.2010, 20:06
quelle
3

Ich weiß nichts über PHP, aber Sie könnten ein ORM verwenden. Wikipedia hat eine schöne Liste von ORM-Software.

    
nmichaels 31.08.2010 19:57
quelle
1

Sie können mit Doktrin ORM nachsehen. Ich bin mir nicht sicher, ob Sie danach gefragt haben oder nicht.

    
Brad F Jacobs 31.08.2010 19:57
quelle
1

Ein guter Weg ist es, ein ORM wie Doktrin zu verwenden.

    
Otávio Décio 31.08.2010 19:57
quelle
1

Ich arbeite hauptsächlich in Joomla und habe meinen eigenen OO-Wrapper für SQL Generation entwickelt. Aber wenn ich an Nicht-Joomla-Projekt arbeite, verwende ich immer db2php, das ist Netbeans IDE-Plugin. Es macht es einfach, auch komplexe Abfragen auszuführen.

Die Generierung der Modelle dauert ein paar Klicks und alles ist erledigt.

Es ist grandios Open Source-Projekt. Schau es dir an.

Ссылка

    
Alex 31.08.2010 20:06
quelle
1

Ich benutze gerne PHPs OOP Ansätze mit einer statischen DB-Klasse und die Verwendung von gespeicherten Prozeduren (SP).

Auf diese Weise wird der gesamte Mysql-Code auf dem Server gespeichert und Sie können die Berechtigungsprüfungen zusammen mit komplexen Abfragen implementieren - indem Sie vorbereitete Anweisungen im SP verwenden. Mit Postgres würde man Funktionen verwenden.

Dies ermöglicht eine saubere Datenbankklasse mit generalisiertem Code zum Erstellen von SP-Aufrufen. Im besten Fall akzeptieren die Methoden des Brokers Objekte als Parameter, so dass sich der PHP-Entwickler auf seinen Code konzentrieren kann und alle Vorteile des phpdoc in seiner IDE (Autocompletion!) Genießt.

z.B.

%Vor%

Dies macht es auch einfach, Dinge als API für Ihr Projekt zu implementieren.

Schreiben von SPs ist ziemlich viel, wenn Sie nicht daran gewöhnt sind.

Gibt es eine gute Software? Ich denke, es gibt gute Abstraktions-Pakete, um die ich nicht weiß ... Ich sehe Dinge wie PDO oder Adodb nicht als Abstraktionsschicht in diesem Sinne. Creole oder Propel ist mehr wie das, woran ich denke. Etwas, wo die Abfragen nicht Teil des Codes sind und mit Abstraktionsschichten wie PDO erstellt werden. Ich habe nicht versucht, kreolische und treiben.

    
Jan. 31.08.2010 21:40
quelle

Tags und Links