Le 6 août 2012 14:16, Dsls <[email protected]> a écrit :
> Re,
>
> Un commit d'il y a quelques temps sur clearbricks rend désormais la
> chose faisable : la branche sexy verra l'abandon des while
> ($rs->fetch()).
>
> Principale motivation : il n'y a pas de raisons que les boucles se
> fassent uniquement sur un résultat en base de données.
>
> La classe record étant désormais Iterable, les :
> while ($rs->fetch())
>
> Deviendront
> foreach ($results as $rs)
>
> NB : les ->fetch seront toujours accessibles, mais plus utilisés au
> niveau du core.

Bon. Je suis embêté avec ce truc. J'ai entrepris de changer tous les
while ($rs->fetch()) par des foreach dans le core, principalement
parce que l'implémentation actuel des record n'est pas très conforme :

L'approche actuelle de dotclear est :
$rs = $core->con->select()..

while ($rs->fetch()) {
$valeur = $rs->value;
...
}

Ce n'est malheureusement pas cohérent avec les itérateurs, il aurait fallu un :
while ($toto= $rs->fetch()) {
$valeur = $toto->value;
}

Et c'est là que ça coince : la boucle entries génère le code suivant :
$_ctx->posts = $core->blog->getPosts();
while ($_ctx->posts->fetch()):
[... code compilé depuis les autres templates ...]
endwhile;

Dans le code compilé, on prend $_ctx->posts comme étant le billet en
cours, alors qu'il serait plus cohérent d'avoir un $_ctx->post (sans
s).

Je peux tout modifier dans le core, mais cela veut dire qu'il faudra
faire une modification de tous les plugins générant des templates
utilisant les $_ctx->*...

--
Bruno
_______________________________________________
Dev mailing list
[email protected]
http://ml.dotclear.org/listinfo/dev

Répondre à