Hola
Yo creo que tendrías que cambiar algunas cosas.
- Por un lado agregar una propiedad que sea conexion SQL y en el constructor agregarla para que tengas acceso a la clase SQL. Efectivamente agregar el include al inicio de la clase para que puedas acceder a la clase SQL.
- Quitar los __ a los metodos personales y dejar solo el __ al construct y al __toString
- Todo esto mismo en el resto de las clases.
- Y lo de final que le agregas a las clases pensaría un poco en lo que dice enriqueplace
Cita: Según la sintaxis, esas clases no podrían ser heredadas, habría que ver el sentido del diseño y el contexto para hacer esto.
Es decir no las podrás heredar...
OJO: Con esto no quiero decir que sea la manera mas correcta. Pero es como yo lo haría.. Os parece bien... Tambien acepto comentarios...
Por otro lado me he limitado a cambiar directamente el codigo, y no a probarlo.
Código PHP:
<?php
include ('SQL.class.php');
final class Vuelo {
private $unaColReservas;
private $mNumero;
private $mFecha;
private $mHora;
private $mAsientos;
private $mDestino;
private $MYSQL;
public function getAtributo($atributo)
{
return $this->$atributo;
}
public function __construct($numero, $fecha, $hora, $asientos, $destino)
{
$this->mNumero = $numero;
$this->mFecha = $fecha;
$this->mHora = $hora;
$this->mAsientos = $asientos;
$this->mDestino = $destino;
$this->MYSQL = new MYSQL()
if ($this->tieneReservas())
$result = $this->MYSQL->sql_query("select * from reservas WHERE idvuelo='". $this->mNumero . "' ORDER by apellido ASC");
while ($row = $this->MYSQL ->sql_fetchrow($result))
{
$pasajero = new Pasajero($row[documento], $row[nombre], $row[apellido]);
$reserva = new Reserva($row[idvuelo], $row[asiento], $row[fila], $pasajero);
$this->unaColReservas[] = $reserva;
}
}
public function agregarDB()
{
$retorno = false;
$result = $this->MYSQL->sql_query("INSERT INTO `vuelos` (`id`, `fecha`,`hora`,`asientos`,`destino`) VALUES ('". $this->mNumero . "', '". $this->mFecha . "', '" . $this->mHora . "', '". $this->mAsientos . "', '". $this->mDestino . "');");
if ($result)
{
$retorno = true;
}
return $retorno;
}
public function borrarDB()
{
$retorno= false;
if (!$this->tieneReservas())
{
$result = $this->MYSQL ->sql_query("DELETE FROM `vuelos` WHERE id='". $this->mNumero . "'");
if ($result)
{
$retorno = true;
}
}
else
{
die("Este vuelo no puede ser borrado porque tiene reservas hechas");
}
return $retorno;
}
public function modificarDB($fecha, $hora, $destino)
{
$retorno = false;
$result = $this->MYSQL ->sql_query("UPDATE `vuelos` SET `fecha` = '$fecha', `hora` = ' $hora', `destino` = '$destino' WHERE id='". $this->mNumero . "'");
if ($result)
{
$this->mFecha = $fecha;
$this->mHora = $hora;
$this->mDestino = $destino;
$retorno = true;
}
return $retorno;
}
public function tieneReservas()
{
$result = $this->MYSQL->sql_query("select * from reservas WHERE idvuelo='". $this->mNumero . "'");
$retorno = false;
if ($this->MYSQL ->sql_numrows($result))
$retorno = true;
return $retorno;
}
public function __toString()
{
return "Vuelo n. <b>" . $this->mNumero . "</b> - Fecha: <b>" . $this->mFecha . "</b> - Hora: <b>" . $this->mHora . "</b> - Destino: <b>" . $this->mDestino . "</b>";
}
}
?>
Saludos,