Utilisateur, session avec une 3eme class - Apprendre-PHP.com

Rechercher
PHP5 Avancé - Eric Daspet et Cyril Pierre de Geyer - Commander sur Amazon.fr

Utilisateur, session avec une 3eme class

Par Vini -  4 reponses -  Le 13/05/2009 -  Flux RSS - 

Bonsoir !

Emacs tu m'avais donnée une très bonne astuce pour les sessions qui consistais à faire du découpage !

 exemple:

  1.  class User
  2. class Session
  3. class Panier

voiçi l'exemple que tu m'avais fais :

Exemple
<?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

Par Emacs -  Le 13/05/2009 - 

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. 

 
Par Vini -  Le 14/05/2009 - 

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
  1. class ShoppingCart
  2. {
  3. private $user;
  4.  
  5.  
  6. public function setUser(User $user)
  7. {
  8. $this->user = $user;
  9. }
  10.  
  11.  
  12. public function getUser()
  13. {
  14. return $this->user;
  15. }
  16. }

 

 

 
Par Vini -  Le 18/07/2009 - 

Salut !

 Tu me conseilles quoi pour setter ? la méthode précédente ou bien celle ci :

 

Methode dans la classe User
  1. public function addProduct(Product $product)
  2. {
  3. ShoppingCart::addItemToCart($this):
  4. }

 

 

 
Par Vini -  Le 18/07/2009 - 

en faite je m'embrouille avec mes méthodes lol

mais tu m'a donner un exemple du genre :

 

Exemple
  1. $user = new User(new Session());
  2.  
  3. et
  4.  
  5. $user->setShoppingCart(new ShoppingCart());
  6. $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
  1. public function setUser(User $user)
  2. {
  3. $this->user = $user;
  4. }

et dans la class User je fais

User
  1. public function setShoppingCart(ShoppingCart $shoppingCart)
  2. {
  3. $shoppingCart->setUser($this)
  4. }

 

J'ai juste besoin d'une confirmation ou bien d'une autre solution si la mienne n'est pas bonne !

Merci Vincent

 

 

 

 

 

 

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !