Utilisateur, session avec une 3eme class
Bonsoir !
Emacs tu m'avais donnée une très bonne astuce pour les sessions qui consistais à faire du découpage !
exemple:
- class User
- class Session
- class Panier
voiçi l'exemple que tu m'avais fais :
Exemple<?phpclass SessionStorage{// Classe de gestion de la session}class ShoppingCart{// Classe pour le panier d'achat}class User{private $sessionStorage = null;private $shoppingCart = null;public function setCulture($culture = 'en'){// Ici tu contrôle la culture et tu charges ton fichier de traduction// par exemple}}$user = new User(new SessionStorage());$user->setCulture('fr');$user->setShoppingCart(new ShoppingCart());$user->addItemToShoppingCart($monItem);?>
j'ai reflechi mais je ne vois pas comme utiliser l'objet session dans les autres classes !
quand je fais j'instancie l'objet User je lui passe en paramètre l'objet SessionStorage, jusque la ça va !
mais je ne vois pas comment Le panier peux bénéficier de l'objet SessionStorage ?
quand tu écrits la methode setShoppingCart(new ShoppingCart)
tu fais juste un setter ? et ensuite tu gère la session à l'interieur de l'objet User ?
la j'ai du mal et pourtant je suis sur que je me prend la tete pour rien comme tu me la déjà demontrer !
sachant que l'objet User detiens l'objet session et qu'il est le centre de la session comment et quel est le mieux pour l'utilisé avec d'autre objets ?
Réponses apportées à cette discussion
Hello,
Ton objet SessionStorage est conservé dans ton objet User et y reste. Si tu veux bénéficier des infos de la session de l'utilisateur dans un autre objet, il te suffit simplement de setter l'objet User à ton objet.
++
Hugo.
ok merci pour ton aide ! moi je pensais qu'il fallait setter l'objet session dans l'objet tiers ! j'etais à coté de la plaque
none
class ShoppingCart { private $user; public function setUser(User $user) { $this->user = $user; } public function getUser() { return $this->user; } }
Salut !
Tu me conseilles quoi pour setter ? la méthode précédente ou bien celle ci :
Methode dans la classe User
public function addProduct(Product $product) { ShoppingCart::addItemToCart($this): }
en faite je m'embrouille avec mes méthodes lol
mais tu m'a donner un exemple du genre :
Exemple
$user = new User(new Session()); et $user->setShoppingCart(new ShoppingCart()); $user->addItemToShoppingCart($monitem);
mais et donc pour faire passer un User dans la class ShoppinCart je fais un setter de user dans cette dernière comme ceçi :
ShoppingCart
public function setUser(User $user) { $this->user = $user; }
et dans la class User je fais
User
public function setShoppingCart(ShoppingCart $shoppingCart) { $shoppingCart->setUser($this) }
J'ai juste besoin d'une confirmation ou bien d'une autre solution si la mienne n'est pas bonne !
Merci Vincent
