Tengo definidas 4 clases:
ClassBaseDatos.php: manejo de base de datos mysql.
ClassProducto.php: Esta clase es simple la utilizo para crear objetos tipo producto.
ClassCarrito.php: Desde esta clase controlo a los objetos tipo producto para agregar, eliminar y editar los productos del carrito.
ClassCatalogo.php: Desde aqui me conecto a la base de datos usando la clase BaseDatos y obtengo los productos.
Ahora bien mi duda es la siguiente, como mencione desde la clase carrito controlo a objetos tipo producto:
ClassProducto.php
Código PHP:
<?php
class Producto {
private $Id;
private $Nombre;
private $Precio;
function __construct ($Nombre, $Precio) {
$this->Id = md5($Nombre);
$this->Nombre = $Nombre;
$this->Precio = $Precio;
}
public function getId () {
return $this->Id;
}
public function getNombre () {
return $this->Nombre;
}
public function getPrecio () {
return $this->Precio;
}
}
?>
Código PHP:
<?php
class Carrito {
private $Productos = array();
private $Total;
function __construct () {
}
// Agrega un Producto
public function add (Producto $Producto, $Cantidad = 1) {
if(array_key_exists($Producto->getId(), $this->Productos)) {
$this->Productos[$Producto->getId()]['Cantidad'] += $Cantidad;
}else{
$this->Productos[$Producto->getId()] = array('Producto' => $Producto,
'Cantidad' => $Cantidad);
}
}
// Elimina un Producto
public function remove (Producto $Producto) {
if(array_key_exists($Producto->getId(), $this->Productos)) {
unset($this->Productos[$Producto->getId()]);
}
}
// Devuelve el numero de Productos
public function size () {
return count($this->Productos);
}
// Define la Cantidad para un Producto dado
public function setCantidad (Producto $Producto, $Cantidad) {
if(array_key_exists($Producto->getId())) {
$this->Productos[$Producto->getId()]['Cantidad'] = $Cantidad;
}
}
// Define el precio Total
private function setTotal (){
$Total = 0;
foreach($this->Productos as $Producto){
$Total += $Producto['Producto']->getPrecio() * $Producto['Cantidad'];
}
$this->Total = $Total;
}
// Devuelve los Productos
public function getProductos () {
return $this->Productos;
}
// Devuelve el precio Total
public function getTotal () {
$this->setTotal();
return $this->Total;
}
}
?>
Código PHP:
<?
$carrito->add(new($row['nombre'],$row['precio']));
?>
De antemano Gracias y espero su respuesta.