romualb a écrit :
Citation :
la mise en session , c'est mal ( que se passe t il si il y a 2 listes sur la pages...
|
c'est vrai que je pourrais proposer de passer les arguments de tri et de pagination dans l'url, mais il y a aussi des arguments contre (perte des arguments en cas de changement de page et retour sur la liste...)
|
Tu les maintiens en rendant ton site "pagination-aware". Parce que je suis d'accord avec flo850: un site qui pète parce que des paramètres de locaux sont stockés en session (qui est par définition globale) c'est crispant.
Sans compter que stocker ces trucs en session signifie qu'il n'y a pas de liens, ça flingue potentiellement la possibilité de le cacher, et ça empêche les visiteurs de partager la page.
romualb a écrit :
Citation :
qu'en est il du choix de la base de données à requeter ?
|
la classe est indépendante de la base de données. Le traitement SQL se fait en amont, le résultat est passé à la classe.
|
Rends la classe db-aware alors (ou, encore mieux, utilise des itérateurs PHP et non des arrays), parce que devoir récupérer 100000 enregistrement pour n'en afficher que 10, c'est pas exactement efficace comme méthode.
Sinon, niveau API c'est assez horrible:
- Des paramètres obligatoires (les données à paginer par exemple) qui sont associés avec un setter alors que ça devrait être fait dans le constructeur (qui devrait également gérer la taille des pages, avec des paramètres par défaut si besoin)
- Comme déjà mentionné par flo850 le style de codage est horrible (mélanges entre camelCased et underscore_separated, préfixe m_ qui n'a aucun intérêt en PHP, mélange de français et d'anglais, …)
- La classe fait beaucoup trop de choses, une classe qui fait de la pagination n'a pas à s'occuper de l'ordre de tri, ta classe devrait être séparée en une demi-douzaine (au moins). Autres trucs qu'une classe de pagination n'a pas à faire: s'occuper de la manière dont ses paramètres sont stockés (surtout si c'est pour les hardcoder dans la session), s'occuper du formattage à l'affichage, … ça manque de composition.
Globalement, je te suggère de regarder comment d'autres ont résolu le problème. le Paginator django a une API pas dégueu et fonctionne globalement bien, ça peut être un point de départ intéressant.
Message édité par masklinn le 29-09-2009 à 14:36:31
---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody