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
