Implementación de la clase del carrito de la compra en PHP, con las propiedades y métodos.
Como habíamos dicho, el carrito de la compra se ha implementado en una clase, para aprovechar algunas de las ventajas de la programación a objetos. Vamos a ver ahora cómo realizar esa clase, lo que incluye la definición de propiedades y métodos.
Atributos de la clase carrito
Es preferible empezar por ver los atributos que tendrá la clase carrito, que ya adelantamos en el capítulo anterior.
//atributos de la clase
var $num_productos;
var $array_id_prod;
var $array_nombre_prod;
var $array_precio_prod;
El atributo $num_productos guarda el número de productos almacenados en el carrito. $array_id_prod guarda los identificadores de los productos comprados. $array_nombre_prod almacena los nombres de los productos y por último, $array_precio_prod, que guarda el precio de los productos.
Por ejemplo, si tuviésemos un solo producto en el carrito, $num_productos valdría uno. Además, en los arrays tendríamos una sola posición (con índice cero), donde se guardaría el identificador, nombre y precio. Estos datos se guardan por separado en cada uno de los tres arrays.
Métodos del carrito
Vamos ahora con las funciones típicas del carrito que se necesitará crear en algún momento.
Constructor
Se debe contar con un constructor que resuma las tareas de inicialización del carrito. En concreto, el constructor simplemente inicia a cero el número de productos del carrito.
function carrito () {
$this->num_productos=0;
}
Introducir un producto en el carrito
Se hace con el método introduce_producto(),que recibe los datos del producto y los introduce en el objeto carrito. También aumenta en uno el número de productos del carrito.
function introduce_producto($id_prod,$nombre_prod,$precio_prod){
$this->array_id_prod[$this->num_productos]=$id_prod;
$this->array_nombre_prod[$this->num_productos]=$nombre_prod;
$this->array_precio_prod[$this->num_productos]=$precio_prod;
$this->num_productos++;
}
El incremento se hace al final porque el numero de productos inicialmente es cero y el primer producto a insertar deseamos que tenga ese índice.
Borrar un producto del carrito
Debemos disponer de una función que nos permita eliminar un producto del carrito. En este caso voy a crear una función que recibe el número de línea del producto dentro del carrito, que corresponde con el índice de los arrays de productos que deseamos borrar. Podríamos recibir también el identificador del producto a borrar o incluso puede ser que nos sea útil crear un par de funciones para borrar productos del carrito, una recibiendo la línea del carrito y otra recibiendo el identificador del producto. Para este ejemplo me resulta más fácil recibir la línea en la que está ese producto en el carrito.
function elimina_producto($linea){
$this->array_id_prod[$linea]=0;
}
Simplemente colocamos a cero el identificador de producto a borrar. No borramos directamente las variables de sesión porque eso nos obligaría a recolocar todos los índices de las variables de sesión para que fuesen correlativos. Este detalle tendremos que tenerlo en cuenta a la hora de mostrar el carrito, pues si el identificador de producto es cero, se entiende que el producto está eliminado del carrito.
Tampoco disminuimos en uno el número de productos, porque en realidad no estamos eliminando un producto de la estructura de datos, sino que lo estoy marcando a cero para saber que no hay nada que contabilizar en ese caso.
En el siguiente capítulo veremos la implementación del método más complicado del carrito, que es el encargado de mostrar todos los productos que hay dentro.
Atributos de la clase carrito
Es preferible empezar por ver los atributos que tendrá la clase carrito, que ya adelantamos en el capítulo anterior.
//atributos de la clase
var $num_productos;
var $array_id_prod;
var $array_nombre_prod;
var $array_precio_prod;
El atributo $num_productos guarda el número de productos almacenados en el carrito. $array_id_prod guarda los identificadores de los productos comprados. $array_nombre_prod almacena los nombres de los productos y por último, $array_precio_prod, que guarda el precio de los productos.
Por ejemplo, si tuviésemos un solo producto en el carrito, $num_productos valdría uno. Además, en los arrays tendríamos una sola posición (con índice cero), donde se guardaría el identificador, nombre y precio. Estos datos se guardan por separado en cada uno de los tres arrays.
Métodos del carrito
Vamos ahora con las funciones típicas del carrito que se necesitará crear en algún momento.
Constructor
Se debe contar con un constructor que resuma las tareas de inicialización del carrito. En concreto, el constructor simplemente inicia a cero el número de productos del carrito.
function carrito () {
$this->num_productos=0;
}
Nota: Este objeto está construido con PHP 4, donde los constructores tienen el mismo nombre que la clase, en este caso "carrito". En PHP 5 los constructores deben llamarse siempre __constructor |
Introducir un producto en el carrito
Se hace con el método introduce_producto(),que recibe los datos del producto y los introduce en el objeto carrito. También aumenta en uno el número de productos del carrito.
function introduce_producto($id_prod,$nombre_prod,$precio_prod){
$this->array_id_prod[$this->num_productos]=$id_prod;
$this->array_nombre_prod[$this->num_productos]=$nombre_prod;
$this->array_precio_prod[$this->num_productos]=$precio_prod;
$this->num_productos++;
}
El incremento se hace al final porque el numero de productos inicialmente es cero y el primer producto a insertar deseamos que tenga ese índice.
Borrar un producto del carrito
Debemos disponer de una función que nos permita eliminar un producto del carrito. En este caso voy a crear una función que recibe el número de línea del producto dentro del carrito, que corresponde con el índice de los arrays de productos que deseamos borrar. Podríamos recibir también el identificador del producto a borrar o incluso puede ser que nos sea útil crear un par de funciones para borrar productos del carrito, una recibiendo la línea del carrito y otra recibiendo el identificador del producto. Para este ejemplo me resulta más fácil recibir la línea en la que está ese producto en el carrito.
function elimina_producto($linea){
$this->array_id_prod[$linea]=0;
}
Simplemente colocamos a cero el identificador de producto a borrar. No borramos directamente las variables de sesión porque eso nos obligaría a recolocar todos los índices de las variables de sesión para que fuesen correlativos. Este detalle tendremos que tenerlo en cuenta a la hora de mostrar el carrito, pues si el identificador de producto es cero, se entiende que el producto está eliminado del carrito.
Tampoco disminuimos en uno el número de productos, porque en realidad no estamos eliminando un producto de la estructura de datos, sino que lo estoy marcando a cero para saber que no hay nada que contabilizar en ese caso.
En el siguiente capítulo veremos la implementación del método más complicado del carrito, que es el encargado de mostrar todos los productos que hay dentro.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...