Closed qfox closed 4 years ago
Экономить ms и продолжать использовать eval для генерации matcher-ов - бесперспективная затея. Посмотрите мою реализацию через готовую анонимную функцию - https://github.com/DevGroup-ru/bh-php/blob/master/src/BH.php#L309-L413 Из плюсов:
Тесты проходит. Также в форке можно найти:
["mod1","mod2"]
@bethrezen Так может вы тоже PR пришлете?
@kompolom вы сначала посмотрите. Несмотря на то, что тесты проходят(а мне пришлось ещё дополнительно кое-что протестить) - есть сомнения, как бы побочных эффектов не вышло. К тому же, изменений крайне много:
["mod1","mod2"]
можно в принципе считать как несовместимость с js-версией шаблонизатора(там я такого не припомню, хотя могу и ошибаться)block__element--modifier
- вещь, необходимая для нашего проекта. Минус в том, что в этой спецификации не предусмотрено значений модификаторов, а формат вида block__element--modifier_modvalue
имхо смотрится коряво.Если в целом ок - оформим PR.
Да, в целом ок, изменения хорошие, хотелось бы это видеть здесь.
Про нейминг в целом были мысли использовать bem-naming, или реализовать его на php, там кода не много и лучше оформить как отдельный пакет. В JS критично грузить пару кБ лишнего кода, поэтому и функция прямо так используется. Ну и вообще, если вы используете этот нейминг в целом — то лучше передавать инстанс в конструктор при создании $bh, и там его использовать.
Про nestingLevel отписал в коммите. Кажется, что это избыточное, но если никто не против — то я тоже за.
@uradvd85 @kompolom Ребят, а вы можете у себя попробовать использовать патченную версию, чтобы время работы посмотреть?
nestingLevel для дебага очень полезно - так нагляднее, даже несмотря на то, что есть недоработочка с вызовом apply из шаблона. Лучше, чем ничего имхо.
Ну эту недоработочку можно исправить. Нужно просто в свойство складывать, и тогда внутренние apply будут вызываться с тем же уровнем.
Т.е. не .html(ctx, level + 1);
а $this->nestingLevel ++; $this->html(ctx); $this->nestingLevel--;
@zxqfox попробуем в ближайшее время.
@zxqfox обязательно попробуем
@zxqfox У нас уже много чего на 4.1 подпилите?
Added dumpFuel and warmUp method (to store compiled matchers right after match registration and load it on start).
/cc @uradvd85 @kompolom
Это ветка 4.0, но было бы хорошо, если бы вы запустили у себя.