Conversation
|
|
||
| protected function patchDateTimeInterfaceSupport(string $content): string | ||
| { | ||
| return $this->replaceValue( |
There was a problem hiding this comment.
Если генератор начнет сам генерировать:
$value instanceof \DateTimeInterface
после патча получится:
$value instanceof \DateTimeInterfaceInterface
|
|
||
| $sanitizeFilenameDocBlock = <<<'PHP' | ||
| /** | ||
| * Sanitize filename by removing path. |
There was a problem hiding this comment.
Очень хрупкое решение: цепляться за комментарии, которые потом могут поменяться в шаблоне и из-за этого получим Runtime Error.
| } | ||
|
|
||
| $utcDateTime = DateTimeImmutable::createFromFormat('U.u', $value->format('U.u'), new DateTimeZone('UTC')); | ||
| if (false === $utcDateTime) { |
There was a problem hiding this comment.
нужно поменять местами, в ensi принято наоборот писать $utcDateTime === false
|
|
||
| protected static function formatDate(DateTimeInterface $value, string $format): string | ||
| { | ||
| if ('date' === $format) { |
There was a problem hiding this comment.
нужно поменять местами, в ensi принято наоборот писать $format === 'date'
| file_put_contents($this->objectSerializerFile, $content); | ||
| } | ||
|
|
||
| protected function patchDefaultDateTimeFormat(string $content): string |
There was a problem hiding this comment.
В patchDefaultDateTimeFormat и в patchDateTimeInterfaceSupport используется replaceValue и нет проверок на количество замен.
patchDefaultDateTimeFormat(): там формат глобально меняется с DateTime::ATOM на Y-m-d\TH:i:s.u\Z, где Z — literal и сам по себе не переводит значение в UTC. Поэтому после этой замены все ветки, использующие $dateTimeFormat, должны гарантированно быть переведены на formatDateTime().
Сейчас если хотя бы один из этих exact str_replace не найдёт исходную строку, патчер молча продолжит работу. В результате можем получить частично пропатченный ObjectSerializer: новый формат с Z, но старый $value->format(self::$dateTimeFormat). Например, 15:00+03:00 в таком пути станет 15:00Z вместо 12:00Z.
|
Ещё нужно добавить тесты. Например:
|
В рамках PR заменил DateTime::ATOM на формат под ensi guide - https://docs.ensi.tech/backend-guides/principles/date-time