函數遍及我的代碼。傳遞一個類似日期的字符串或DateTime(不可變)對象;它會吐出一個PHP DateTime或DateTimeImmutable對象,如果輸入是一個類似「0000-00-00」的字符串,則爲false。隨着第二個參數,也可以強制得到的結果是不可變的或不:
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;
}
基本上是「我不知道我開始,但我知道我想要什麼」,功能。
(注:PHP 7語法的位在這裏,但很容易地適應PHP 5)
@domanokz - 這將是在*錯了一步*方向 –
是啊,我忘了,在PHP變量的變化很數據類型取決於它的內容。 – dpp