U 
		
				
				
			
		u94082
			Guest
			
		Bonsoir à tous,
Suite au post "POO ou pas POO ?" j'ai essayé de m'y mettre (ce fût laborieux) et ai tenté de faire quelque chose.
Vu qu'il y a apparemment ici des pros dans ce domaine, j'aimerai bien avoir vos avis sur la syntaxe, la façon dont c'est construit, comment optimiser etc...
Bien sur c'est quelque chose qui existe déjà mais bon faut bien débuter par quelque chose.
Voilà, suis-je sur la bonne voie ?
Merci
PS : Ce n'est pas sécurisé et un zip avec l'ensemble est dispo ici.
La classe qui gère le "catalogue"
	
	
	
		
Et celle qui gère le panier
	
	
	
		
				
			Suite au post "POO ou pas POO ?" j'ai essayé de m'y mettre (ce fût laborieux) et ai tenté de faire quelque chose.
Vu qu'il y a apparemment ici des pros dans ce domaine, j'aimerai bien avoir vos avis sur la syntaxe, la façon dont c'est construit, comment optimiser etc...
Bien sur c'est quelque chose qui existe déjà mais bon faut bien débuter par quelque chose.
Voilà, suis-je sur la bonne voie ?
Merci
PS : Ce n'est pas sécurisé et un zip avec l'ensemble est dispo ici.
La classe qui gère le "catalogue"
		Code:
	
	class Store
{
	protected $db;
	private $product;
	
	public function __construct()
	{
		if (is_readable(PRODUCTS_DB))
			$this->db = new SimpleXMLElement(file_get_contents(PRODUCTS_DB));	
			//$this->db = simplexml_load_string(file_get_contents(PRODUCTS_DB));	
		else
			return exit('Products xml database missing or unreadable.');
	}
	
	private function selectone($id)
	{
		return $this->db->Xpath('/products/product[id="'.$id.'"]');
	}
	
	protected function productexist($id)
	{
		if (count($this->selectone($id)) > 0)
			return true;
		else
			return false;
	}
	
	public function productprice($id)
	{	
		if ($this->productexist($id))
			$this->product = $this->selectone($id);
			return $this->product[0]->price;
	}
	
	public function productname($id)
	{
		if ($this->productexist($id))
			$this->product = $this->selectone($id);
			return $this->product[0]->name;
	}
	
	public function viewstore()
	{
		return $this->db->product;
	}
}Et celle qui gère le panier
		Code:
	
	class Cart extends Store
{
	protected $items;
	private $total;
	
	public function __construct()
	{
		parent::__construct();
		session_start();
		
		if (!isset($_SESSION['cart'])) 
			$this->items = array();
		else
			$this->items = unserialize($_SESSION['cart']);
	}
	
	public function additem($id)
	{
		if (array_key_exists($id, $this->items))
			$this->items[$id]++;
		else
			$this->items[$id] = 1;
	}
	
	public function delitem($id)
	{
		if (array_key_exists($id, $this->items))
			if ($this->items[$id] > 1)
				$this->items[$id]--;
			else
				unset($this->items[$id]);
	}
	
	public function emptycart()
	{
		$this->items = array();
	}
	
	public function nbitems()
	{
		return array_sum($this->items);
	}
	
	public function viewcart()
	{
		return $this->items;
	}
	
	public function totalcart()
	{
		$this->total = 0;
		
		foreach ($this->items as $id => $qty)
		{
			$this->total += $this->productprice($id) * $qty;
			//$this->total += parent::productprice($id) * $qty;
		}
		
		return $this->total;
	}
	
	public function __destruct()
	{
		$_SESSION['cart'] = serialize($this->items);
	}
}
 C'est vrai que c'est plus joli (mais plus long à écrire
 C'est vrai que c'est plus joli (mais plus long à écrire 
 
 
		 
     
 
		 
 
		 
 
		 
 
		 
 
		 
 
		