Raphaël Malié Posted October 5, 2011 Share Posted October 5, 2011 Le contexte est une nouveauté technique de la version 1.5, il a été développé pour correspondre à deux objectifs : Ne plus utiliser dans la mesure du possible des globales qui sortaient d'un peu partout Permettre de pouvoir changer le contexte dans certaines méthodes Le contexte est une légère implémentation du design pattern Registry, il s'agit d'une classe stockant les principales information de PrestaShop comme le cookie, le customer, l'employé, le cart, smarty, etc.. Il sera possible d'accéder au contexte dans les controllers (front et back) et les modules de cette façon : $this->context. Autrement, il sera possible d'y accéder comme ceci : Context::getContext(). Exemple, au lieu de faire : global $cookie; $language_id = $cookie->language_id; il faudra faire $language_id = $this->context->language->id; La compatibilité avec les globales sera maintenue durant la version 1.5 et supprimée pour la prochaine version majeur, alors il faudra adapter les modules pour tirer partie de ces nouvelles bonnes pratiques. 2 Link to comment Share on other sites More sharing options...
olea Posted October 5, 2011 Share Posted October 5, 2011 +1 Est-ce que ce contexte contiendra le controller en cours d'exécution ? En particulier, dans les hooks de modules, aura-t-on accès au controller en cours d'exécution ? Link to comment Share on other sites More sharing options...
Raphaël Malié Posted October 5, 2011 Author Share Posted October 5, 2011 Bonjour Olea, oui le controller sera bien accessible, tout simplement comme ceci : $this->context->controller Link to comment Share on other sites More sharing options...
olea Posted October 5, 2011 Share Posted October 5, 2011 Impec On avait perdu ce controller en 1.4 Link to comment Share on other sites More sharing options...
Spir Posted October 5, 2011 Share Posted October 5, 2011 C'est top, c'est quelque chose qu'on trouve habituellement dans les frameworks. Merci beaucoup l'equipe Prestashop, vous allez facilité le boulot des devs. avec toutes ces fonctionnalitées! Link to comment Share on other sites More sharing options...
Julien Breux Posted October 6, 2011 Share Posted October 6, 2011 Merci ! Link to comment Share on other sites More sharing options...
olea Posted October 6, 2011 Share Posted October 6, 2011 dans ce contexte, pour les lang / currency / customer... aura-t-on juste les id ou les objets eux-même ? Si on est dans le controller product, aura-t-on aussi l'objet Product ? Ceci pour éviter plusieurs instanciations d'un même objet dans plusieurs hook Link to comment Share on other sites More sharing options...
Raphaël Malié Posted October 6, 2011 Author Share Posted October 6, 2011 Bonjour, dans le contexte on aura directement les objets. D'ailleurs au lieu d'utiliser cookie->id_language il faudra utiliser directement language->id, un des soucis actuel du code est que trop d'instances sont faîtes, et grâce au contexte on a réduit ça. Pour ce qui concerne l'accès à l'objet product dans le controller, il s'agit de la conception des controllers et non plus du contexte, mais normalement c'est le cas dans mes souvenirs sur la 1.5. Link to comment Share on other sites More sharing options...
olea Posted October 6, 2011 Share Posted October 6, 2011 D'ailleurs, je parle de Product pour le controller Product, mais c'est vrai aussi pour tout controller qui est en train de gérer une instance en particulier : une catégorie par le controller Category, un Manufacturer, un Shop.... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now