Tema: Clase Fechas
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/11/2005, 15:02
Avatar de Webstudio
Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Bueno, la verdad no voy a ser muy benévolo que digamos, pero tu "clase" en realidad no es tal. Tan solo es un conjunto de funciones desconexas unidas bajo un mismo objeto. ¿No pensaste por qué tu constructor y tu destructor no tienen ningún sentido? Porque da lo mismo si tus funciones están dentro de un objeto o no. Crealas como funciones y vas a ver que dan el mismo servicio.

Un acercamiento realmente orientado a objetos, haría que la clase "Fecha", sea una representación real de una fecha, y sus métodos, operaciones sobre la fecha que el objeto representa. un ejemplo, muy básico, sería :
Código PHP:
<?php
class Fecha
{
    var 
$_fecha null;
    function 
__construct$fecha null )
    {
        if(!
$fecha)
            
$this->_fecha time();
        else
            
$this->_fecha strtotime($fecha);
    }
    
    function 
timestamp()
    {
        return 
$this->_fecha;
    }
    
    function 
diasHastaHoy()
    {
        return 
$this->diferenciaFecha( new Fecha() );
    }
    
    function 
diferenciaFecha(Fecha $fecha)
    {
        
$dias $this->_fecha $fecha->timestamp();
        
// no sabemos cual fecha es mayor o menor, entonces nos aseguramos
        // que la diferencia entre ellas sea un número positivo
        
if($dias 0$dias $dias * (0-1);
        
        
$dias $dias 60 60 24;
        return 
top($dias); //acá hacemos un redondeo
    
}
}
?>
Más allá de errores de sintaxis que pueda haber caido por escribir directamente acá en el fondo, la idea es la de crear objetos como representaciones de algo, no como un mero conjunto de funciones que bien podrían ir en una librería de código procedural. ¿Notas como cambia la idea, y como se simplifica el desarrollo? Internamente, manejamos la representación de una fecha constantemente como timestamp, que facilita los cálculos, y a la persona que utiliza nuestra clase, no le interesa como está implementado, solo quiere poder realizar las funciones que proveemos.

El siguiente es un simple ejemplo de utilización :

Código PHP:
<?php
$fecha1 
= new Fecha("12/12/2004");
$fecha2 = new Fecha("16/01/2005");
echo 
'la diferencia en días es de '.$fecha1->diferenciaFecha($fecha2).' dias<br>';
echo 
'la diferencia en días a hoy es de '.$fecha1->diferenciaHastaHoy().' dias<br>';
?>
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com