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);
}
}