Size: a a a

2020 January 14

JP

Junior PhP in phpGeeks
Alex
Ребят, привет. Есть конфиг (массив), к нему хочется сделать что-то типа репозитория, где будут располагаться фукнции типа "findByCode", но по сути это не репозиторий тк данные берутся не из БД.
Как его правильно назвать?
или репозиторий подойдет?
Называть нужно так чтобы понял абсолютно любой другой программист. Но главное не переборщить
источник

BH

Bogdan Hmarnii in phpGeeks
Можно
источник

r

release-tracker in phpGeeks
Вышла новая версия Composer: dependency manager for PHP:  1.9.2
источник

AL

Alexander Lisachenko in phpGeeks
Народ, есть у кого на примере хорошие либы для работы с AST-деревьями? (Кроме php-parsera) Можно и с других языков тоже...
источник

AL

Alexander Lisachenko in phpGeeks
Интересует именно часть мутации данных
источник

AS

Alexey Shatunov in phpGeeks
Alexander Lisachenko
Народ, есть у кого на примере хорошие либы для работы с AST-деревьями? (Кроме php-parsera) Можно и с других языков тоже...
https://golang.org/src/go/ast/ 😉 часть языка как и в php, но мне кажется именно по мутации то есть прикладным каким-то вещам все сильно индивидуально... я бы в сторону xslt смотрел наверное
источник

AS

Alexey Shatunov in phpGeeks
ну и мне кажется использование AST это в чистом виде имплементация тех или иных visitor'ов которые конкретные результаты выдают(точнее аккумулируют)
источник

AS

Alexey Shatunov in phpGeeks
наверное самым логичным использованием является то как в js-либах патчится реальный DOM изменениями в shadow-DOM
источник

AL

Alexander Lisachenko in phpGeeks
Alexey Shatunov
наверное самым логичным использованием является то как в js-либах патчится реальный DOM изменениями в shadow-DOM
Да вот я тоже на DOM API смотрю, но неужели нет хорошей либы, чтобы вот прям удобная, мне бы посмотреть на API такое разок. XPATH / JSONPath смахивают на дичь...
источник

AL

Alexander Lisachenko in phpGeeks
Визиторы - тоже плохо, потому что надо городить будет или анонимные визитеры для решения мелких задач, либо обкладываться кучей мелких классов и следить за их порядком.

А хочется что-то типа: есть AST файла => дай все классы в нем => дай все методы по классу => убери у нод метола флаг final.
источник

AL

Alexander Lisachenko in phpGeeks
Alexey Shatunov
https://golang.org/src/go/ast/ 😉 часть языка как и в php, но мне кажется именно по мутации то есть прикладным каким-то вещам все сильно индивидуально... я бы в сторону xslt смотрел наверное
В этом пакете про мутацию - почти полный 0, не подходит.
источник

AS

Alexey Shatunov in phpGeeks
Alexander Lisachenko
Да вот я тоже на DOM API смотрю, но неужели нет хорошей либы, чтобы вот прям удобная, мне бы посмотреть на API такое разок. XPATH / JSONPath смахивают на дичь...
я думаю что тут надо смотреть в сторону DSL, потому что все что ты указал - это по сути сериализуемая операция над поддеревом или нодой, а то что ты хочешь это модификация дерева по каким-то детерминированным правилам, а значит и сами правила - будут иерархическими. Проще говоря библиотек нет, то что ты описал ну это visitor сделает, пройдется по дереву уберет в определенных нодах что-то
источник

AS

Alexey Shatunov in phpGeeks
Alexander Lisachenko
В этом пакете про мутацию - почти полный 0, не подходит.
ну просто нет таких библиотек ;) есть DSL-ки как я выше написал (типа XPATH), но в основном для извлечения информации а не апдейтов дерева
источник

AS

Alexey Shatunov in phpGeeks
Alexander Lisachenko
В этом пакете про мутацию - почти полный 0, не подходит.
А чем тебе не нравится вариант DSL-ки которая генерит visitor'ы?
источник

AS

Alexey Shatunov in phpGeeks
описываешь правила, на выходе понятный предсказуемый код для модификации AST
источник

AL

Alexander Lisachenko in phpGeeks
Alexey Shatunov
А чем тебе не нравится вариант DSL-ки которая генерит visitor'ы?
Слишком навороченно, уж лучше тогда будет обычный нод-визитор как у Никиты. Хоть я и не особо этот подход поддерживаю, но если так принято в теории, ну что же ок. Других примеров мне не попадалось более удачных, думал может кто видел...
источник

AS

Alexey Shatunov in phpGeeks
Alexander Lisachenko
Слишком навороченно, уж лучше тогда будет обычный нод-визитор как у Никиты. Хоть я и не особо этот подход поддерживаю, но если так принято в теории, ну что же ок. Других примеров мне не попадалось более удачных, думал может кто видел...
согласен, кодогенерация очень плохо тестируема и не сильно человекопонятна, как с регулярками - всегда можно выстрелить себе в ногу и долго выяснять почему. Но это просто сокращение времени на реализацию
источник

AS

Alexey Shatunov in phpGeeks
но мне больше нравится все равно подход при котором ты будешь не в визиторах сложную логику описывать, а сразу получишь что-то готовое и при необходимости сможешь поправить руками
источник

AS

Alexey Shatunov in phpGeeks
долго и мучительно проходили такое с парсингом .proto - файлов, пробовали варианты нагенерить что-то Antlr4, пробовали варианты с регулярками, в итоге коллега запилил обычный парсер дающий на выходе AST под конкретные задачи и разработчик все равно для использования писал visitor'ы руками но уже по собственному варианту AST кастомизированному, не соответствующему структуре .proto-файлов
источник

AS

Alexey Shatunov in phpGeeks
проще говоря - модификация дерева была на уровне парсера, а не на уровне манипуляций с исходным деревом
источник