Как мигрировать бота: от PHP-классов к YAML и что нужно учесть
Переход от жестко закодированной логики к более гибким конфигурационным файлам — это всегда большой шаг для любого проекта. В случае с ботами, где каждый экран раньше был отдельным PHP-классом, миграция на YAML-структуру позволила значительно упростить поддержку и устранить избыточный код. Но такой переход — это не только смена формата, но и целый набор подводных камней, от особенностей парсинга до сохранения целостности данных.
Переход на YAML: от кода к декларативному описанию
Основная идея миграции заключалась в том, чтобы вынести описание экранов бота из самого кода и перенести его в формат YAML. Это сделало структуру более декларативной, что в целом упрощает дальнейшую работу с контентом. Вместо того чтобы писать логику для каждого экрана в отдельном классе, теперь можно описывать состояния и переходы в файле.
Кроме того, для управления поведением кнопок была внедрена более чистая структура. Вместо того чтобы жестко кодировать логику кнопок, в YAML появились специальные правила принятия решений (decisions), что позволяет делать переходы условно, основываясь на заданных условиях.
Технические нюансы работы с YAML и данными
Работа с YAML принесла ряд специфических моментов, которые пришлось отлаживать. Например, важно помнить о различиях в обработке спецсимволов: в YAML одинарные кавычки сохраняют их, а двойные — нет. А еще парсер может быть удивлен, если вы случайно сдвинете ключ на два пробела — он может интерпретировать это как вложенность, что приведет к потере локали.
Еще один момент, который требует внимания — это обработка текста. Когда текст начинает рассматриваться как