Perso, entre :
$strReq = 'SELECT post_id ' .
'FROM ' . $this->core->prefix . 'post ' .
'WHERE post_id = ' . $post_id . ' ' .
"AND user_id = '" . $this->con->escape($user_id) . "' ";
$rs = $this->con->select($strReq);
et :
$sql = new dcSelectStatement($this->core);
$sql
->column('post_id')
->from($this->table)
->where('post_id = ' . $post_id)
->and('user_id = ' . $sql->quote($user_id, true));
$rs = $sql->select();
Et qui font absolument pareil, je préfère la seconde syntaxe, plus claire pour quelqu’un qui vient lire ça pour la première fois (et les fois suivantes aussi d’ailleurs).
Pas vous ?
1 De Philippe -
D’accord avec toi, mais la première forme parle plus si on a l’habitude du langage SQL, comme c’est mon cas (bien que ce soit devenu assez rare que je doive faire des requêtes personnalisées ;))
2 De Bernard -
+ 1 sauf que je connaissais pas
quote
3 De JcDenis -
Je t’ai vu jouer avec ces jours, il faut que je teste sur des requêtes un peu longues ou tordues voir si ça chante autant :)
Autant l’utilisation de ce style de code pour les forms je trouve ça lourd au final, autant ici j’y vois un réel avantage à la relecture.
4 De Gilsoub -
Alors disons qu’au niveau du vécu, cela peut interpeler ;-)
5 De Franck -
L’idée générale est de faire disparaître tous les mots-clés SQL des sources, hormis dans des classes utilitaires comme celle que je développe petit à petit Philippe.
Bernard
quote()
s’occupe d’encadrer avec des quotes et au passage d’échapper s’il c’est demandé, c’est plus simple comme ça.JcDenis eh bien j’ai modifié (pas encore poussé) une des fonctions qui en utilise le plus des tordues, je crois, dans class.dc.blog.php, qui s’appelle
getPosts()
et pour l’instant rien ne m’a posé de problème, ça rend la lecture plus claire, je trouve.Par contre je suis en train de voir comment on peut s’abstraire des
params[]
qu’on transporte d’une fonction à l’autre (entre autres entre les class.dc.meta.php et class.dc.blog.php, et là c’est moins simple ; pour l’instant j’en suis à imaginer passer un objetdcSelectStatement
en argument pour faire ça, mais la réflexion n’est pas finie à ce sujet. C’est la raison pour laquelle je n’ai pas encore tout poussé…6 De Philippe -
Ah, mais je ne me permettais pas de critiquer, hein. Je me doute bien que tu as de bonnes raisons pour le faire ! Et je m’y habituerai facilement ; en fait ma réflexion est plutôt :
Continue à esspliquer, on apprend :D
7 De Marie-Aude -
Si je voulais troller, je dirais que ça me rappelle furieusement les arguments de $wpdb->query, mais ça serait du troll :) Et comme je commente peu ici, ne connaissant pas DC, je ne le ferai pas en public ^^
Cela dit, plus sérieusement, oui c’est plus clair dans la seconde version
Par contre, est ce que ça permet de gérer les jointures de table ? (et y a t il besoin dans DC ?)
8 De Franck -
Philippe je n’avais pas pris ça comme une (mauvaise) critique, t’inquiètes ;-) Et pis je vais continuer à expliquer des trucs, j’aime bien ça :-)
Marie-Aude tu m’intrigues et je vais aller voir ce qu’est cette
$wpdb->query
même si j’ai une petite idée ; en même temps y’en a un peu partout des helpers de ce type, dans Laravel par exemple.Quant aux jointures, comme celles-ci :
Ça peut :-)
By the way Marie-Aude on accepte toutes les critiques, même de celles et ceux qui ne connaissent pas Dotclear, bien au contraire d’ailleurs, c’est toujours intéressant ;-)
9 De JcDenis -
+1 pour les critiques extérieurs, c’est toujours bon d’avoir un point de vue diffèrent. Ca pousse à réflexion et généralement il en ressort toujours quelques choses.
@Franck Oui je m’étais fait les dents du coté de dcCore pour me faire une idée et lire tes classes jusqu’à la fin 😅
10 De Nicolas -
La différence avec wordpress est que dans dotclear il y a une abstraction de base de données. wordpress ne supporte, officiellement, que mysql alors que dotclear supporte postgres, mysql et sqlite.
Ce que tu développes me rappelle très fortement ce qui est fait dans Doctrine : https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html
11 De Franck -
Je suis allé voir le code de Wordpress et je trouve ça un peu le foutoir, où on retrouve à la fois des fonctions d’abstraction pour construire des requêtes et toute la mécanique de connexion et de gestion de la base. Cela dit l’abstraction ne va pas aussi loin, c’est dommage ; par contre ils gèrent les requêtes préparées, peut-être une idée pour plus tard ou alors basculer sur
PDO::prepare
et consort.Merci Nicolas pour l’info à propos de Doctrine, je vais aller voir ça ; y’a surement de bonnes idées à piquer :-)
12 De Philippe -
Huhu, le foutoir dans le code de WP, ce n’est pas seulement dans les accès à la base ;) Et ça propulse une partie significative du web…
13 De Franck -
Roh comment tu trolles Philippe :-)
14 De Marie-Aude -
:) ce n’était pas une critique. Si je n’avais pas fait de la création de site avec ecommerce, toussa toussa, j’aurais sans doute utilisé DotClear, mais j’avais la flemme de maîtriser deux outils. J’ai toujours bien aimé DotClear, d’abord parce que les gens qui l’utilisent sont sympas et intéressants. Et je suis impressionnée de la longévité de l’outil.
Sinon, voilà ce à quoi je pensais. C’est un peu différent, mais le même principe de quitter la pure requete sql https://developer.wordpress.org/reference/classes/wp_query/#parameters
15 De Marie-Aude -
Et sans troller, oui, le code WP est un peu le foutoir, mais on s’y retrouve. C’est je crois la contrepartie de la compatibilité ascendante qu’ils ont toujours privilégié, et qui fait que les MAJ sont nettement plus simples que sur d’autres CMS (j’ai failli me jeter par la fenêtre avec des Prestashops et des Drupals :D ), il y a aussi beaucoup de gens qui ne le connaissent pas bien et l’utilisent mal. Mais quand on y va sérieusement on peut faire des trucs propres et puissants.
La qualité de l’outil, de toute façon, ça dépend de l’utilisateur ^^
16 De Philippe -
Marie-Aude : ah oui, les mises à jour de Prestashop, là il y a vraiment de quoi s’affoler pour de vrai :D Sauf peut-être récemment, avec l’adoption croissante de Symfony ?
17 De Bernard -
Vais peut-être dire une baitiz, mais (citations)
1)
2)
=> Dotclear (l’outil) est sympa et intéressant ;-)))
18 De Marie-Aude -
Toutafé :)