Bueno verificando tienes bastantes errores, pero son cuestión de corregir operadores,
Código PHP:
Ver original<?php
class Medidas{
private $alto;
private $largo;
public function __construct($alto,$largo)
{
$this->alto = $alto;
$this->largo = $largo;
}
public function __set($name, $value)
{
switch($name)
{
case 'Alto':
$this->alto =$value;
break;
case 'Largo':
$this->largo=$value;
break;
}
}
}
class Clase1 {
private $propiedad1;
private $Medidas;
public function __construct($propiedad1, Medidas $Medidas)
{
$this->propiedad1=$propiedad1;
$this->Medidas = $Medidas;
}
public function __clone()
{
$this->Medidas = clone $this->Medidas;
}
}
class Clase2 extends Clase1{
private $propiedad2;
public function __construct($propiedad1,$Medidas,$propiedad2)
{
parent::__construct($propiedad1,$Medidas);
$this->propiedad2 = $propiedad2;
}
}
$prueba=new Clase2('hola',new Medidas(20,30),'adios');
$clonar = clone $prueba;
$clonar->Medidas->Alto=10;
$clonar->Medidas->Largo=20;