Código PHP:
<?php
//// clase Vehiculo
class Vehiculo
{
public $peso;
public $potencia;
}
//// clase Rueda
class Rueda
{
public $nombre;
function __construct($nombre)
{
$this->nombre = $nombre;
}
}
//// una Moto es un Vehiculo
//// una Moto tiene Ruedas
class Moto extends Vehiculo
{
public $marca;
public $ruedas = array();
//// constructor de copia para Moto
//// $that referencia al objeto original
//// $this referencia al objeto clonado
function __clone()
{
$this->ruedas['del'] = new Rueda ($that->ruedas['del']->nombre);
$this->ruedas['tras'] = new Rueda ($that->ruedas['tras']->nombre);
}
}
//// creamos dos ruedas
$rueda_delantera_mich = new Rueda ('delantera-michelin');
$rueda_trasera_mich = new Rueda ('trasera-michelin');
//// construimos una moto
$yamaha_R1 = new Moto();
$yamaha_R1->marca = "Yamaha R1";
$yamaha_R1->ruedas['del'] = $rueda_delantera_mich;
$yamaha_R1->ruedas['tras'] = $rueda_trasera_mich;
//// alehop! -> clonamos la moto
$yamaha_R1_bis = $yamaha_R1->__clone();
//// vemos que ruedas tiene cada moto
echo "Yamaha R1:";
echo "<br>";
echo "Marca: ".$yamaha_R1->marca;
echo "<br>";
echo "Delantera: ".$yamaha_R1->ruedas['del']->nombre;
echo "<br>";
echo "Trasera: ".$yamaha_R1->ruedas['tras']->nombre;
echo "<br><br>";
//// Yamaha R1:
//// Marca: Yamaha R1
//// Delantera: delantera-michelin
//// Trasera: trasera-michelin
echo "Yamaha R1 (bis):";
echo "<br>";
echo "Marca: ".$yamaha_R1->marca;
echo "<br>";
echo "Delantera: ".$yamaha_R1_bis->ruedas['del']->nombre;
echo "<br>";
echo "Trasera: ".$yamaha_R1_bis->ruedas['tras']->nombre;
echo "<br>segun ele ejmplo deberia imprimir<br>";
//// Yamaha R1 (bis):
//// Marca: Yamaha R1
//// Delantera: delantera-michelin
//// Trasera: trasera-michelin
?>
pero me aparece el siguiente error
Fatal error: Cannot call __clone() method on objects - use 'clone $obj' instead in C:\xampp\htdocs\proyecto\php_oo5\utiles_php\class1 5.php on line 45
line 45:
Código PHP:
$yamaha_R1_bis = $yamaha_R1->__clone();
Código PHP:
$yamaha_R1_bis =clone $yamaha_R1;
Marca: Yamaha R1
Delantera: delantera-michelin
Trasera: trasera-michelin
Yamaha R1 (bis):
Marca: Yamaha R1
Delantera:
Trasera:
alguien me puede dar una ayuda muchas gracias