Clearbricks SQL Query builder

J’ai commencé hier à implémenter un constructeur de requête SQL, histoire de voir s’il y avait moyen d’alléger le code côté Dotclear, d’une part, et d’autre part de s’affranchir des particularités propres aux différents gestionnaires de base de données (MySQL, PostgreSQL, SQLite).

Ça commence à fonctionner comme je le souhaite, sachant que pour l’instant je me suis largement inspiré de cette librairie.

Cela dit, au moment de commencer à écrire les tests unitaires associés, je me demande si l’écriture n’est pas un poil trop lourde et verbeuse.

Exemple :

$sql = dbQuery::make($con)
    ->from('mytable')
    ->where(dbQueryConditions::make($sql, 'id = ?', 1))
    ->select();

Qui pourrait aussi s’écrire de cette façon (sans utiliser les fonctionnalités de paramètres injectés dans les expressions) :

$sql = dbQuery::make($con)
    ->from('mytable')
    ->where(dbQueryConditions::make($sql, 'id = 1'))
    ->select();

Pour obtenir in fine une requête SQL qui ressemble à (avec le driver MySQLi) :

SELECT * FROM `mytable` WHERE id = 1

Z’en dites ?


Cela dit, en utilisant les possibilités d’alias des namespaces, on devrait pouvoir aussi écrire ça comme ça :

use \dbQuery as sql;
use \dbQueryConditions as sqlCond;

$sql = sql::make($con)
    ->from('mytable')
    ->where(sqlCond::make($sql, 'id = 1'))
    ->select();

Du coup ça devient un poil moins lourd à lire.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/13733

Haut de page