il sera pas possible de faire une couche de compatibilité legacy après coup ?

2012/8/10 Dsls <[email protected]>:
> 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
_______________________________________________
Dev mailing list
[email protected]
http://ml.dotclear.org/listinfo/dev

Répondre à