Luego clienteVideoclub tiene la clase 'Cliente' para crear usuarios que alquilan (un máximo de tres soportes). Y luego la clase test en la que quiero hacer pruebas y que se impriman diferentes formas del programa según los datos. Pero se queda en blanco:
MUCHAS GRACIAS DE ANTEMANO!
testClient.php:
Código
<?php include ("videoclub.php"); include ("clienteVideoclub.php"); $client1 = new Cliente ("Carlos López", "CL001", false); $peli1 = new DVD ("Los Otros", 1, 2.99, 120, "Español"); $peli2 = new DVD ("Los Vengadores", 2, 2.99, 140, "Español, inglés y francés"); $peli3 = new DVD ("El Hundimiento", 3, 2.99, 167, "Español, inglés y alemán"); $vidJu1 = new Videojuego ("FIFA 17", 4, 5.99, "Play Station 4", "Deporte", 1, 4); $vidJu2 = new Videojuego ("Tomb Raider VII", 5, 6.99, "PC", "Aventuras", 1, 1); $peli1->imprime_caracteristicas(); $peli3->imprime_caracteristicas(); echo '<br>Mostramos info de cliente nada más crearlo: <br>'; $client1->show_info(); echo '<br> * - - - - - - - - - - - - * <br>'; $client1->alquila_soporte($peli1); echo '<br>'; $client1->alquila_soporte($peli2); echo '<br>'; $client1->show_info(); echo '<br>'; echo '<br> * - - - - - - - - - - - - * <br>'; ?>
videoclub.php
Código
<meta charset="utf-8"> <?php class Soporte { public $titulo; protected $numero; private $precio; function __construct($tit,$num,$precio){ $this->titulo = $tit; $this->numero = $num; $this->precio = $precio; } public function dame_precio_sin_iva(){ return $this->precio; } public function dame_precio_con_iva(){ return $this->precio * 1.16; } public function dame_numero_identificacion(){ return $this->numero; } public function imprime_caracteristicas(){ echo $this->titulo; echo "<br>" . $this->precio . " (IVA no incluido)"; } public function dame_titulo(){ return $this->titulo; } } class DVD extends Soporte { private $duracion; private $idiomas_disponibles; function __construct ($tit, $num, $precio, $duracion, $idiomas){ parent::__construct($tit, $num, $precio); $this->duracion = $duracion; $this->idiomas_disponibles = $idiomas; } public function dame_duracion(){ return $this->duracion; } public function dame_idiomas(){ return $this->idiomas_disponibles; } public function imprime_caracteristicas(){ echo 'Pelicula DVD<br>'; parent::imprime_caracteristicas(); echo '<br>Duración: ' . $this->dame_duracion() . ' min.'; echo '<br>Idimas: ' . $this->dame_idiomas(); } } class Videojuego extends Soporte{ private $consola; private $tipo; private $numMinJug; private $numMaxJug; function __construct ($tit, $num, $precio, $consola, $estilo, $min_j, $max_j){ parent::__construct($tit, $num, $precio); $this->consola = $consola; $this->tipo = $estilo; $this->numMinJug = $min_j; $this->numMaxJug = $max_j; } public function dame_consola(){ return $this->consola; } public function dame_tipo(){ return $this->tipo; } public function dame_jugadores(){ if($this->numMinJug == $this->numMaxJug){ if($this->numMinJug == 1){ echo 'Juego de un jugador'; } else { echo 'Juego de ' . $this->numMinJug . ' jugadores.'; } } else { echo 'De ' . $this->numMinJug . ' a ' . $this->numMaxJug . ' jugadres.'; } } public function imprime_caracteristicas(){ echo 'Juego de ' . $this->dame_consola() . '<br>'; parent::imprime_caracteristicas(); echo '<br> Num. Jugadores: '; $this->dame_jugadores(); echo '<br>Tipo: ' . $this->dame_tipo(); } } ?>
clienteVideoclub.php:
Código
<meta charset="utf-8"> <?php include ("videoclub.php"); class Cliente { private $user_name; private $user_id; private $max_rent_prd; private $isPremium; private $rented_products; private $num_of_rentPrd; function __construct ($name, $id, $premium){ $this->user_name = $name; $this->user_id = $id; $this->isPremium = $premium; if($this->isPremium == true){ $this->max_rent_prd = 5; } else { $this->max_rent_prd = 3; } $this->num_of_rentPrd = 0; for($i=0; $i<$this->max_rent_prd; $i++){ $this->rented_prd[$i] = null; } } public function get_privilege(){ if ($this->isPremium == true ){ return true; } else { return false; } } public function get_userName(){ return $user_name; } public function get_userID(){ return $user_id; } /**Este método recibe un soporte y devuelve true si está entre los alquileres del cliente. Devuelve false en caso contrario. */ public function ha_alquilado ($soporte){ foreach ($this->rented_products as $product){ if($product->dame_numero_identificacion() == $soporte->dame_numero_identificacion()){ return true; } } } } /**Este método comprueba si el cliente tiene alquilados todos los soportes que puede alquilar de una vez */ public function is_full(){ foreach ($this->rented_products as $product){ return false; } } return true; } /** Este método sirve para alquilar una película o juego por parte del cliente. Recibe el soporte a alquilar y, en caso que el alquiler se pueda producir, debe introducir el objeto soporte recibido en el array de soportes alquilados del cliente. */ public function alquila_soporte($soporte){ if ($this->ha_alquilado($soporte)){ echo 'El cliente ya ha alguilado el soporte'; } else if ($this->is_full()) { echo 'No puede alquilar más. Devuelva algún soporte'; } else { foreach($this->rented_products as $product){ if ($product == null){ echo 'Ha alquilado ' . $product->dame_titulo(); $product = $soporte; $num_of_rentPrd ++; break; } } } } /** Método que devuelve el soporte a caja. El soporte desaparece del array $rented_products del cliente*/ public function devuelve_soporte($soporte){ foreach ($this->rented_products as $product){ if($soporte->dame_numero_indentificacion() == $product->dame_numero_identificacion()){ echo 'Devuelto: ' . $product->dame_titulo(); $product = null; $num_of_rentPrd --; } } } /** Método que muestra toda la información disponible del cliente*/ public function show_info(){ echo '<br> Nombre: ' . $this->get_userName(); echo '<br> ID_client: ' . $this->get_userID(); if ($this->get_privilege()) { echo "Es premium.<br>"; } else { echo "No es premium.<br>"; } //echo "Ha alquilado " . $num_of_rentPrd . " productos."; foreach ($this->rented_products as $product){ if ($product = null){ echo '<br>- ...'; } else { echo'<br>- ' . $product->dame_titulo(); } } } } ?>