Mi amiga me preguntó cómo puede crear y comparar fechas en PHP. Como sabía que hay una clase DateTime en PHP, le dije que la buscara y la usara una vez que la entendiera, sin embargo, no estaba seguro de las cosas de comparación. Así que busqué en Google cómo podrías comparar fechas en PHP. Pensé que la clase DateTime usa algún método incorporado para comparar fechas. Pero para mi sorpresa, el código se veía así:
$today_dt = new DateTime($today); $expire_dt = new DateTime($expire); if ($expire_dt < $today_dt) { /* Do something */ } Lo que no entiendo es cómo se puede usar un operador de comparación como < para comparar dos 'Objetos'. Pensé que solo podías comparar tipos de datos primitivos usando los operadores de comparación. Entonces, ¿cómo compara PHP dos 'Objetos' usando los operadores de comparación?
No está bien documentado, pero al comparar objetos, PHP compara las variables miembro una por una en orden de declaración, hasta que encuentra la primera variable desigual y devuelve un resultado basado en eso.
más detalles aquí: http://us3.php.net/manual/en/language.oop5.object-comparison.php#98725
Sí, por lo general, estaría en lo correcto -> pero, para las clases integradas de PHP, como DateTime, esto es diferente. https://wiki.php.net/internals/engine/objects#compare_objects .
Desearía que hubiera una implementación para un método mágico "__compare" para implementar la comparación. Sin embargo, por ahora, tienes 2 opciones:
Edite después de leer la respuesta de @WhatHaveYouTriedSoFar arriba: 1) podría hacer uso de la forma en que PHP compara objetos, "la operación de comparación se detiene y regresa a la primera propiedad desigual encontrada" ( http://us3.php.net/manual/en /idioma.oop5.objeto-comparación.php#98725 )
2) puede crear su propio método de "comparación".