Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2010, 19:31
negro1985
 
Fecha de Ingreso: febrero-2009
Ubicación: mexico
Mensajes: 148
Antigüedad: 15 años, 2 meses
Puntos: 1
Exclamación Ayuda con herencia multiple

Tengo 3 clases

Conexion.class.php
Código PHP:
<?php
class Conexion
{
    private 
$cn;
    private 
$rs;
    private 
$servidor;
    private 
$usuario;
    private 
$password;
    private 
$bd;

    public function 
__construct($servidor "localhost"$usuario "root"$password =
        
"220785"$bd "sce")
    {
        
$this->servidor $servidor;
        
$this->usuario $usuario;
        
$this->password $password;
        
$this->bd $bd;
        
$this->cn = new mysqli($servidor$usuario$password$bd);
    }
    public function 
dbExecute($query)
    {
        
$this->rs $this->cn->query($query);
        return 
$this->rs;
    }
    public function 
getInsertedId()
    {
        return 
$this->cn->insert_id;
    }
    public function 
afectados()
    {
        return 
$this->cn->affected_rows;
    }
    protected function 
clean($value)
    {
        if (
get_magic_quotes_gpc()) {
            
$value stripslashes($value);
        }
        
$value mysql_real_escape_string(htmlspecialchars($value));
        return 
$value;
    }
    public function 
__destruct()
    {
        
$this->cn;
    }
}
?>
Edad.class.php
Código PHP:
<?php
class Edad
{
    private 
$fecha_nacimiento;

    public function 
__construct($fecha_nacimiento)
    {
        
$this->fecha_nacimiento $fecha_nacimiento;
    }

    private function 
dia() //Día de la fecha de nacimiento

    
{
        
$fecha explode("-"$this->fecha_nacimiento);
        
$dia $fecha[2];

        return 
$dia;
    }
    private function 
mes() //Mes de la fecha de nacimiento

    
{
        
$fecha explode("-"$this->fecha_nacimiento);
        
$mes $fecha[1];

        return 
$mes;
    }
    private function 
anio() //Año de la fecha de nacimiendo

    
{
        
$fecha explode("-"$this->fecha_nacimiento);
        
$anio $fecha[0];

        return 
$anio;
    }
    private function 
getmes() //Mes actual

    
{
        
$hoy explode("-"date("Y-m-d"));
        
$mes $hoy[1];
        return 
$mes;
    }
    private function 
getanio() //Año actual

    
{
        
$hoy explode("-"date("Y-m-d"));
        
$anio $hoy[0];
        return 
$anio;
    }
    private function 
getdia() //Día actual

    
{
        
$hoy explode("-"date("Y-m-d"));
        
$dia $hoy[2];
        return 
$dia;
    }
    private function 
calculo() //Calculo de la edad actual

    
{
        
$cumplidos $this->getanio() - $this->anio();
        return 
$cumplidos;
    }
    public function 
calcular_edad()
        
//Calculo de la edad con la codicion de que si no ha llegado a la fecha exacta de nacimiento no imprime la edad que en el año actual deberia cumplir

    
{
        
$edad $this->calculo();
        if (
$this->getmes() >= $this->mes() && $this->getdia() >= $this->dia()) { //Verifica que si el mes y dia son iguales a los de su nacimiento
            
return $edad;
        } else {
            
$edad $edad 1;
            return 
$edad;
        }
    }
    public function 
__destruct()
    {
        
$this->fecha_nacimiento;
    }
}
?>
Alumno.class.php
Código PHP:
<?php
class Alumno extends Conexion 
{
    private 
$id_alumno;
    private 
$nombre;
    private 
$app;
    private 
$apm;
    private 
$edad;
    private 
$sexo;
    private 
$fecha_nacimiento;
    private 
$estado_nacimiento;
    private 
$municipio_nacimiento;
    private 
$curp;
    private 
$colonia;
    private 
$calle;
    private 
$numero_casa;
    private 
$cp;
    private 
$estado_residencia;
    private 
$municipio_residencia;
    private 
$telefono;
    private 
$status;
    private 
$fecha_ingreso;
    private 
$imagen;
    private 
$id_tutor;
    private 
$id_grupo;
    private 
$where;

    public function 
__construct()
    {
        
parent::__construct();
        
parent::__destruct();
    }
    public function 
agregar($id_alumno$nombre$app$apm$edad$sexo$fecha_nacimiento,
        
$estado_nacimiento$municipio_nacimiento$curp$colonia$calle$numero_casa,
        
$cp$estado_residencia$municipio_residencia$telefono$status$fecha_ingreso,
        
$imagen$id_tutor$id_grupo)
    {
        
$this->id_alumno $id_alumno;
        
$this->nombre $nombre;
        
$this->app $app;
        
$this->apm $apm;
        
$this->edad $edad;
        
$this->sexo $sexo;
        
$this->fecha_nacimiento $fecha_nacimiento;
        
$this->estado_nacimiento $estado_nacimiento;
        
$this->municipio_nacimiento $municipio_nacimiento;
        
$this->curp $curp;
        
$this->colonia $colonia;
        
$this->calle $calle;
        
$this->numero_casa $numero_casa;
        
$this->cp $cp;
        
$this->estado_residencia $estado_residencia;
        
$this->municipio_residencia $municipio_residencia;
        
$this->telefono $telefono;
        
$this->status $status;
        
$this->fecha_ingreso $fecha_ingreso;
        
$this->imagen $imagen;
        
$this->id_tutor $id_tutor;
        
$this->id_grupo $id_grupo;

        
$query "INSERT INTO alumnos (id_alumno,nombre,app,apm,edad,sexo,fecha_nacimiento,estado_nacimiento,municipio_nacimiento,curp,colonia,calle,numero_casa,cp,estado_residencia,municipio_residencia,telefono,status,fecha_ingreso,imagen,id_tutor,id_grupo) VALUES ('$id_alumno','$nombre','$app','$apm','$edad','$sexo','$fecha_nacimiento','$estado_nacimiento','$municipio_nacimiento','$curp','$colonia','$calle','$numero_casa','$cp','$estado_residencia','$municipio_residencia','$telefono','$status','$fecha_ingreso','$imagen','$id_tutor','$id_grupo')";
        return 
$this->dbExecute($query);
    }
    public function 
consultar($where)
    {
        
$this->where $where;
        
$query "SELECT * FROM alumnos $where";
        return 
$this->dbExecute($query);
    }
    public function 
modificar($id_alumno$nombre$app$apm$edad$sexo$fecha_nacimiento,
        
$estado_nacimiento$municipio_nacimiento$curp$colonia$calle$numero_casa,
        
$cp$estado_residencia$municipio_residencia$telefono$status$fecha_ingreso,
        
$imagen$id_tutor$id_grupo)
    {
        
$this->id_alumno $id_alumno;
        
$this->nombre $nombre;
        
$this->app $app;
        
$this->apm $apm;
        
$this->edad $edad;
        
$this->sexo $sexo;
        
$this->fecha_nacimiento $fecha_nacimiento;
        
$this->estado_nacimiento $estado_nacimiento;
        
$this->municipio_nacimiento $municipio_nacimiento;
        
$this->curp $curp;
        
$this->colonia $colonia;
        
$this->calle $calle;
        
$this->numero_casa $numero_casa;
        
$this->cp $cp;
        
$this->estado_residencia $estado_residencia;
        
$this->municipio_residencia $municipio_residencia;
        
$this->telefono $telefono;
        
$this->status $status;
        
$this->fecha_ingreso $fecha_ingreso;
        
$this->imagen $imagen;
        
$this->id_tutor $id_tutor;
        
$this->id_grupo $id_grupo;

        
$query "UPDATE alumnos SET nombre='$nombre',app='$app',apm='$apm',edad='$edad',sexo='$sexo',fecha_nacimiento='$fecha_nacimiento',curp='$curp',colonia='$colonia',calle='$calle',numero_casa='$numero_casa',cp='$cp',estado_residencia='$estado_residencia',municipio_residencia='$municipio_residencia',telefono='$telefono',status='$status',fecha_ingreso='$fecha_ingreso',imagen='$imagen',id_tutor='$id_tutor',id_grupo='$id_grupo' WHERE id_alumno='$id_alumno'";
        return 
$this->dbExecute($query);
    }
    public function 
eliminar($id_alumno)
    {
        
$this->id_alumno $id_alumno;
        
$query "DELETE FROM alumnos WHERE id_alumno='$id_alumno'";
        return 
$this->dbExecute($query);
    }
    public function 
total($where)
    {
        
$this->where $where;
        
$query "SELECT COUNT(id_alumno) AS id_alumno FROM alumnos $where";
        return 
$this->dbExecute($query);
    }
}
?>
El problema esta en que necesito hereda las dos clases conexion y edad a la clase alumno pk necesito calcular la edad del alumno mediante su fecha de nacimiento, pero no se como puedo implementar las dos clases en la otra, habia pensado heredar edad a conexion y despues conexion a alumnos, pero el detalle esta en que no siempre voy a a utilizar los metodos de edad, sino en algunas clases por ejemplo solo en la de alumno, alguien puede ayudarme