modZone.ru
138 subscribers
15 photos
3 files
57 links
Канал сайта modZone.ru
Download Telegram
Channel created
This media is not supported in your browser
VIEW IN TELEGRAM
Привет, друзья! Мои подписчики первыми узнают о моих планах 😀 Сегодня с утра решил допилить controlErrorLog. Теперь он будет выглядеть так.
Очередные размышления на тему как в MODX встроить шаблонизатор PHP без костылей и палок.

https://modzone.ru/blog/2020/09/06/new-parsing-concept/
Сегодня сделал каркас описанной выше концепции парсинга. Пока только со Smarty. Постарался убрать все раздражающие моменты шаблонизации с Феномом.

Во-первых, рекурсивный парсинг заменён на однократный. Во-вторых, теперь нет проблем с кэширование чанков и файловых сниппетов. В-третьих, отказ от шаблонов в БД. Последние нужны только для ТВшек. Ну и наконец, нет проблем с фигурными скобками в javascript.

По итогам тестирования Smarty выигрывает у Fenom при парсинге 100 чанков около 30%. Это с учётом холодного запуска. Со второго просмотра страницы выигрыш составляет уже порядка 50% - 0,0254 сек против 0,0378 сек. Тут я говорю о Fenom из pdoTools, работающий в режиме MODX шаблонизатора.

Сравнивая эти 2 шаблонизатора могу сказать, что у Smarty больше удобных фишек. Следующий на очереди Blade. Обдумываю, не впихнуть ли их в один пакет. Иначе придётся делать 3 пакета. Один, который меняет логику парсинга, от которого будут зависеть 2 других с шаблонизаторами. Дилемма! 🤔
Что интересно, все туториалы и курсы по изучению языков программирования обязательно содержат пример создания TODO функционала. А вот в MODX такого не оказалось. Заговор или модыксеры выше этого? 🤷‍♂️
А мне вот понадобилось.
Уже сейчас можно попробовать потестить скорость Smarty и Fenom. Считает среднее на 10 запросов по кругу.

http://s22375.h3.modhost.pro/smarty.html

http://s22375.h3.modhost.pro/fenom.html
Меня периодически спрашивают, как я генерирую разноцветный геометрический фон для заголовков моих статей на главной странице моего сайта. А я для этого использую специальную js библиотеку

https://github.com/btmills/geopattern
В рамках полноценного использования PHP шаблонизаторов в MODX возникает необходимость в альтернативе pdoTools. Вы поддержали бы идею использования в таком компоненте ORM Eloquent вместо xPDO?
Final Results
92%
Да.
4%
Нет.
4%
Пофиг.
Дошли руки заняться классом modRequest. В одном из своих видео я рассказывал, что это за зверь. Но погрузившись глубже я просто ах...., скажем вежливо, моему удивлению нет предела. 🤮

Несколько раз подряд вызывается метод поиска ресурса по uri. Один за другим. Если ресурсы не кэшируются, то все запросы летят в базу. Но это ещё не всё. Если у вас отключено кэширование карты ресурсов, что советуют делать для сайтов, у которых больше тысячи ресурсов, то поиск происходит так - сначала идет поиск ресурса в базе по uri, берётся его id и следом идёт поиск в базе уже по id. Как вам логика? Нравится?
А если ресурс не найден, то начинаются пляски с uri. К нему добавляется или убирается суффикс контейнера. И опять идёт запрос в базу.🙈

В ZoomX я это безобразие выбросил. И ещё добавил FastRoute в приоритетном режиме. Т.е. сначала проверка роутов, а только потом проверка xPDO. Другие аналогичные пакеты вешают обработку на событие OnPageNotFound, что в итоге удлиняет путь запроса. Зачем делать лишнюю работу (проверки, запросы в базу), если правило уже определено! 🤓

Пакет скоро будет готов. Логика всего этого сложная. Пока пишу тесты. Вот такая новость.
Интересная вещь обнаружилась в процессе копания в ядре. Оказывается в информационную схему ресурсов заложена возможность отображение ресурса в разных контекстах через специальные ссылки modContextResource (композитная связь). Т.е. ресурс из одного контекста можно отобразить в других. Например, какие-то общие страницы компании, которые не зависят от контекста. Та же страница "О компании". Сейчас такие задачи решаются через симлинки. Но их нужно создавать в базе. А контекстные ресурсы нет.

Но дело в том, что до реализации этой фичи дело не дошло. Интересно, почему?

У кого-нибудь были задачи, где пригодилась бы такая возможность?
Вообще, подготовка документации - это важный элемент тестирования функциональности. Пока я пишу документацию к своему компоненту ZoomX (а это я считаю самым сложным элементом этапа разработки), я уже несколько раз пересобирал пакет. Была даже парочка концептуальных правок.

П.С. Справедливости ради надо сказать, что данное утверждение справедливо (сорри за тавтологию), когда вы работаете без заранее составленного ТЗ.
После долгих разговоров рад сообщить, что первая версия моего компонента для альтернативного подхода к использованию PHP шаблонизаторов готова.

https://modzone.ru/blog/2020/10/23/zoomx-first-release/