= 0; } if (is_string($value)) { return '' !== $value; } if (is_object($value)) { return method_exists($value, '__toString') && ((string) $value) !== ''; } return false; } /** * Преобразует переданне значение в объект типа DateTime. * * @param DateTime|int|string $value Преобразуемое значение * * @return null|DateTime Объект типа DateTime или null, если при парсинг даты не удался */ public static function castToDateTime(mixed $value): ?DateTime { if ($value instanceof DateTime) { return clone $value; } if (is_numeric($value)) { $date = new DateTime(); $date->setTimestamp((int) $value); } elseif (is_string($value) || (is_object($value) && method_exists($value, '__toString'))) { $date = date_create((string) $value); if (false === $date) { $date = null; } } else { $date = null; } return $date; } /** * Проверяет можно ли преобразовать переданное значение в буллево значение. * * @param mixed $value Проверяемое значение * * @return bool True если значение преобразуется в bool, false если нет */ public static function canCastToBoolean(mixed $value): bool { return is_numeric($value) || is_bool($value); } }