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>';
?>