Bu davranışı önlemek anda doğrulamak için bu pasajı kullanabilirsiniz, geçerli oturum için ayarlayabilirsiniz kodum boyunca işlev. Tarih-benzeri bir dize veya DateTime (Immutable) nesnesini iletin; PHP DateTime veya DateTimeImmutable nesnesini ya da girdinin "0000-00-00" benzeri bir dize olması durumunda false olacaktır. ikinci parametre ile aynı zamanda değişmez ya da olmamak sonucu zorlayabilirsiniz:
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;
}
Temelde bir "Ben ile başladı emin değilim, ama ben ne istediğimi biliyorum" fonksiyonu.
(Not: Burada PHP 7 sözdizimi Biraz ama kolayca PHP 5'e uyarlanmış)
@domanokz - * yanlış bir adım olacaktır * yönü –
Evet, unuttum, PHP'de değişkenler bu kadar değiştirir DataType, içeriğine bağlı olarak. – dpp