jueves, 20 de mayo de 2010

PHP Class Persona y Personas 2 (edad)

<?php
class Persona
{
    public $_nombre = "unNombre";
    public $_edad = 0; //se calcula a medida que ingresan
    public $_sexo = "M"; //M o F

    public $_fecha_nacimiento = "1988-10-9"; //formato mysql sin ceros
    public $_fecha_ingreso = "1988-10-9"; //formato mysql sin ceros

    #Metodos
    //public function __construct($_nom, $_ed)
    function Persona($nom = 'pepito', $fecha_nacimiento = "1986-9-1", $sexo = "M", $fecha_ingreso = "2010-5-3" )
    {
        $this->_nombre = $nom;
        $this->_fecha_nacimiento = $fecha_nacimiento;
        $this->_sexo = $sexo;
        
        $this->_fecha_ingreso = $fecha_ingreso;
        
        $this->_edad = calcularEdadByFechaMySql($fecha_nacimiento);
        
    }

    public function showName()
    {
        echo $this->_nombre;
    }
    
    public function showAll()
    {
        echo "<pre>";
            print_r(get_object_vars($this));
            //var_dump(get_object_vars($this));
        echo "</pre>";
    }
    
    
}


class Personas
{
    public $_personas = array();
  
    #Metodos
    function Personas(/*$_nom, $_ed*/)
    {
    // $this->$_personas = array();
    // $this->edad= $_ed;
    }
    public function Add($aPersona)
    {
        //array_push($this->_personas, $aPersona); //este tmb anda
        $this->_personas[] = $aPersona;
    }
    public function Count()
    {
        return count($this->_personas);
    }
    public function getSumaDeEdades()
    {
        $tot = 0;
        foreach ($this->_personas as $per)
        {
               $tot += $per->_edad;
        }
        return $tot;
    }

    
    public function getCantNinios()
    {
        $tot = 0;
        foreach ($this->_personas as $per)
        {
               if( $per->_sexo == "M" )
               {
                    $tot++;
               }
        }
        
        return $tot;
    }
    
    public function getCantNinias()
    {
        $tot = 0;
        foreach ($this->_personas as $per)
        {
               if( $per->_sexo == "F" )
               {
                    $tot++;
               }
        }
        
        return $tot;
    }
  
      public function getHDP($edadZarpadaMayorA = 99)
    {
        $array = array();
        foreach ($this->_personas as $per)
        {
               if( $per->_edad >= $edadZarpadaMayorA )
               {
                    $array[] = $per;
               }
        }
        
        return $array;
    }
  
  
  
      public function getWhoCumplenEdad($edadInicial = 0, $edadLimite = 7)
    {
        $array = array();
        foreach ($this->_personas as $per)
        {
               if( ($edadInicial <= $per->_edad ) && ($per->_edad <= $edadLimite ) )
               {
                    $array[] = $per;
               }
        }
        
        return $array;
    }
    
    public function getCantWhoCumplenEdad($edadInicial = 0, $edadLimite = 7)
    {
        $tot = 0;
        foreach ($this->_personas as $per)
        {
               if( ($edadInicial <= $per->_edad ) && ($per->_edad <= $edadLimite ) )
               {
                    $tot++;
               }
        }
        
        return $tot;
    }
    
  
    public function showAll()
    {
        echo "<hr><pre>";
        print_r($this->_personas);
        echo "</pre><hr>";
    }
}

/***********************************************************/
// echo calcularEdadByFechaMySql("2009-11-03 19:35:21"); //formato mysql
// echo calcularEdadByFechaMySql($user['user_fecha_nacimiento']);
/***********************************************************/
function calcularEdadByFechaMySql($fecha_nac)
{
    //Esta funcion toma una fecha de nacimiento
    //desde una base de datos mysql
    //en formato aaaa/mm/dd y calcula la edad en números enteros

    $dia=date("j");
    $mes=date("n");
    $anno=date("Y");

    //descomponer fecha de nacimiento
    // $dia_nac=substr($fecha_nac, 8, 2);
    // $mes_nac=substr($fecha_nac, 5, 2);
    // $anno_nac=substr($fecha_nac, 0, 4);

    $datetime = date_create($fecha_nac);

    $dia_nac = date_format($datetime, 'd');
    $mes_nac = date_format($datetime, 'n');
    $anno_nac = date_format($datetime, 'Y');

    if($mes_nac>$mes){
    $calc_edad= $anno-$anno_nac-1;
    }else{
    if($mes==$mes_nac AND $dia_nac>$dia){
    $calc_edad= $anno-$anno_nac-1;
    }else{
    $calc_edad= $anno-$anno_nac;
    }
    }
    return $calc_edad;
}
?>

No hay comentarios:

Publicar un comentario