Tomado de: http://www.forosdelweb.com/f18/aporte-carrito-compra-para-php5-702193/ -----Articulos.class.php Clase que representa un artículo. id_articulo = $id_articulo; } public function getIdArticulo() { return $this->id_articulo; } public function setPrecioArticulo($precio_articulo) { $this->precio_articulo = $precio_articulo; } public function getPrecioArticulo() { return $this->precio_articulo; } } -ColeccionArticulos.class.php Clase que representa al carrito que almacenará los artículos. Implementa el patrón singleton así que para instanciarla hay que usar el método estático getCarrito(). getIdArticulo(); if($id_articulo) $this->coleccion_articulos[$id_articulo] = $articulo; } public function removeArticulo(Articulos $articulo) { $id_articulo = $articulo->getIdArticulo(); if($id_articulo && array_key_exists($id_articulo, $this->coleccion_articulos)) unset($this->coleccion_articulos[$id_articulo]); } public function getCantidadArticulos() { return count($this->coleccion_articulos); } public function getPrecioTotal() { $precio_total = 0; foreach($this->coleccion_articulos as $articulo) $precio_total += $articulo->getPrecioArticulo(); return $precio_total; } public function vaciarCarrito() { $this->coleccion_articulos = array(); } } -Y por último un script para probarlo index.php EJEMPLO A: AGREGAMOS 2 ARTICULOS\n"; // Creamos el carrito $carrito = ColeccionArticulos::getCarrito(); // Creamos el 'Articulo 1' $art1 = new Articulos(); $art1->setIdArticulo("001"); $art1->setPrecioArticulo(45.60); // Agregamos el 'Articulo 1' al carrito $carrito->addArticulo($art1); // Creamos el 'Articulo 2' $art2 = new Articulos(); $art2->setIdArticulo("005"); $art2->setPrecioArticulo(5.40); // Agregamos el 'Articulo 2' al carrito $carrito->addArticulo($art2); // Mostramos la cantidad de articulos y el precio total tras agregar los dos articulos. echo "\nCANTIDAD ARTICULOS: ".$carrito->getCantidadArticulos(); echo "\nPRECIO TOTAL: ".$carrito->getPrecioTotal(); echo ""; /* EJEMPLO B: ELIMINAMOS 1 ARTICULO */ echo "
EJEMPLO B: ELIMINAMOS 1 ARTICULO \n";

// Eliminamos el 'Articulo 1'
$carrito->removeArticulo($art1);

// Mostramos la cantidad de articulos y el precio total tras eliminar un articulo.
echo "\nCANTIDAD ARTICULOS: ".$carrito->getCantidadArticulos();
echo "\nPRECIO TOTAL: ".$carrito->getPrecioTotal();
echo "
"; // Vaciamos el carrito $carrito->vaciarCarrito(); /* EJEMPLO C: VACIAMOS EL CARRITO */ echo "
EJEMPLO C: VACIAMOS EL CARRITO\n";

// Mostramos la cantidad de articulos y precio total tras vaciar el carrito.
echo "\nCANTIDAD ARTICULOS: ".$carrito->getCantidadArticulos();
echo "\nPRECIO TOTAL: ".$carrito->getPrecioTotal();

echo "\n\nFIN DEL SCRIPT";
echo "
";