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 :
<?php
class 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
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 :
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 :
$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 :
public function setUser(User $user)
{
$this->user = $user;
}
et dans la class User je fais
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