Vamos a realizar varias clases para implementar una Liga de Fútbol.
En primer lugar crearemos la clase Equipo, que tendrá un nombre (pedido en el constructor) y puntos. Getters y setters mágicos.
Después la clase Partido, que tendrá un Equipo local y un Equipo visitante y unos goles del local y goles del visitante. En el constructor le pasamos el equipo local y el visitante. Los goles tendrán getter y setter mágicos.
Por último tenemos la clase Liga, que dispondrá de un array con diferentes equipos. Para añadirlos implementaremos la función Add(Equipo). Tendrá también un array de Partidos que incialmente estará vacío. Cuando llamemos a la función crearLiga() nos creará los partidos con los equipos que tengamos.
Un ejemplo:
$a=new Equipo(“Logroñés”);
$b=new Equipo(“ALbacete”);
$c=new Equipo(“Numancia”);
$liga=new Liga();
$liga->add($a);
$liga->add($b);
$liga->add($c);
$liga->crearLiga(); //Nos añadirá a partidos los siguientes partidos: Logroñés-Albacete, Logroñés-Numancia y Albacete-Numancia
class Equipo {
private $nombre;
private $puntos;
function __construct($nombre) {
$this->nombre = $nombre;
}
function __get($name) {
if (!property_exists($this, $name)) {
throw new Exception("La propiedad $name no existe");
}
return $this->$name;
}
function __set($name, $value) {
if (!property_exists($this, $name)) {
throw new Exception("La propiedad $name no existe");
}
$this->$name = $value;
}
}
class Partido {
private $local;
private $visitante;
private $gol_local;
private $gol_visitante;
function __construct(Equipo $local, Equipo $visitante) {
$this->local = $local;
$this->visitante = $visitante;
}
function __get($name) {
if ($name == "gol_local" || $name == "gol_visitante") {
return $this->$name;
} else {
throw new Exception("La propiedad $name no existe");
}
}
function __set($name, $value) {
if ($name == "gol_local" || $name == "gol_visitante") {
$this->$name = $value;
} else {
throw new Exception("La propiedad $name no existe");
}
}
}
class Liga {
private $equipos = [];
private $partidos = [];
function add(Equipo $equipo) {
$this->equipos[] = $equipo;
}
function crearLiga() {
$this->partidos = [];
for ($i = 0; $i < count($this->equipos) - 1; $i++) {
for ($j = $i + 1; $j < count($this->equipos); $j++) {
$this->partidos[] = new Partido($this->equipos[$i], $this->equipos[$j]);
}
}
}
function crearLigaIdayVuelta() {
$this->partidos = [];
foreach ($this->equipos as $local) {
foreach ($this->equipos as $visitante) {
if ($local != $visitante) {
$this->partidos[] = new Partido($local, $visitante);
}
}
}
}
}