Używam tego funkcja w całym moim kodzie. Przekaż mu ciąg znaków podobny do daty lub obiekt DateTime (Immutable); wypluje obiekt PHP DateTime lub DateTimeImmutable lub false, jeśli input jest łańcuchem "0000-00-00". Z drugiego parametru może również wymusić rezultat być niezmienna czy nie:
function ensureDateTime ($input, $immutable = NULL) {
if (! $input instanceof \DateTimeInterface) {
if (in_array($input, ['0000-00-00', '0000-00-00 00:00:00'], true)) {
$input = false;
} elseif ($immutable) {
$input = new \DateTimeImmutable($input);
} else {
$input = new \DateTime($input);
}
} elseif (true === $immutable && $input instanceof \DateTime) {
$input = new \DateTimeImmutable($input->format(TIMESTAMPFORMAT), $input->getTimezone());
} elseif (false === $immutable && $input instanceof \DateTimeImmutable) {
$input = new \DateTime($input->format(TIMESTAMPFORMAT), $input->getTimezone());
}
return $input;
}
Zasadniczo „Nie jestem pewien, co zacząłem, ale wiem, czego chcę”, function.
(Uwaga: Trochę PHP 7 składni tutaj, ale łatwo dostosować do PHP 5)
@domanokz - to byłoby krokiem w * zła * kierunek –
Tak, zapomniałem, zmienne w PHP zmienia to DataType w zależności od jego zawartości. – dpp