pdoTools 3
Привет, друзья!
В связи с выходом альфа-версии MODX 3, я выкроил время и переписал pdoTools — теперь он использует пространства имён и полностью совместим с новыми классами системы.
Соотвественно, работать он может исключительно в MODX 3, со старой версией никак не совместим. Какое-то время мне придётся поддерживать 2 ветки дополнений. Новый pdoTools, как и сам MODX, пока что в виде сырой alpha1, только для тестов.
А теперь подробности.
Изменения смотрим в репозитории, ветка 3.x.
Пропала директория model, а весь код теперь в src, которая соответствует MODX\Components\PDOTools. Я решил, что дополнения должны быть в этом namespace.
Fenom, как и прежде, ставится через локальный composer, общесистемный я не использую, потому что он будет затираться при обновлении движка. Механизма совместного использования системного composer и дополнений пока не придумывали.
Все исходные файлы разделены по директориям и пространствам имён, на мой взгляд стало удобнее. Например, работа с кэшем вынесена в PDOTools\Cache\Cache, а построение дерева из ресурсов в PDOTools\Helpers\Functions.
Минимальная версия PHP теперь 7.0, как и у MODX. Наконец-то мне не нужно писать array(). Весь код переформатирован.
pdoTools подключается в систему через свой плагин, больше никаких танцев с системными настройками и специальными именами классов. В MODX 3 появилась простейшая реализация контейнера зависимостей, поэтому я просто запихиваю в него всё нужное на событии OnMODXInit.
Как видно из кода, появился отдельный класс PDOTools\Parser\Debug — и это именно то, о чём вы подумали — встроенный DebugParser. Я не буду его переписывать для 3й версии MODX, теперь он живёт в pdoTools. Работает ровно так же, как и раньше — просто авторизуйтесь в админку и добавьте ?debug=1 к адресу нужной страницы на сайте.
Убран параметр nestedChunkPrefix, который был придуман еще до интеграции Fenom. Старожилы могут помнить странные чанки, где внизу были закомментированные куски для хитрого парсинга — вот это было оно. Думаю, что этим давно уже никто не пользуется, так что нечего тащить в новую версию.
Все сниппеты и классы по умолчанию работают с новыми моделями MODX. То есть, не $modx->getObject('modResource');, а
Соответственно, в коде pdoTools переписано очень много всего и ошибки, наверняка, там сейчас есть. Ваша задача погонять сниппеты со своими выборками на тестовых сайтах и написать мне, где и когда что вылезает.
Так-то все сниппеты работают корректно с параметрами по умолчанию, но может что-то вылезти при подключении и сортировке по ТВ, например.
В связи с этим временно открываю issues на GitHub.
Новая версия pdoTools 3 уже на modstore.pro, а текущая alpha MODX 3 на modhost.pro
В связи с выходом альфа-версии MODX 3, я выкроил время и переписал pdoTools — теперь он использует пространства имён и полностью совместим с новыми классами системы.
Соотвественно, работать он может исключительно в MODX 3, со старой версией никак не совместим. Какое-то время мне придётся поддерживать 2 ветки дополнений. Новый pdoTools, как и сам MODX, пока что в виде сырой alpha1, только для тестов.
А теперь подробности.
Изменения смотрим в репозитории, ветка 3.x.
Пропала директория model, а весь код теперь в src, которая соответствует MODX\Components\PDOTools. Я решил, что дополнения должны быть в этом namespace.
Fenom, как и прежде, ставится через локальный composer, общесистемный я не использую, потому что он будет затираться при обновлении движка. Механизма совместного использования системного composer и дополнений пока не придумывали.
Все исходные файлы разделены по директориям и пространствам имён, на мой взгляд стало удобнее. Например, работа с кэшем вынесена в PDOTools\Cache\Cache, а построение дерева из ресурсов в PDOTools\Helpers\Functions.
Минимальная версия PHP теперь 7.0, как и у MODX. Наконец-то мне не нужно писать array(). Весь код переформатирован.
pdoTools подключается в систему через свой плагин, больше никаких танцев с системными настройками и специальными именами классов. В MODX 3 появилась простейшая реализация контейнера зависимостей, поэтому я просто запихиваю в него всё нужное на событии OnMODXInit.
use MODX\Components\PDOTools\Core;
use MODX\Components\PDOTools\Fetch;
use MODX\Components\PDOTools\Parser\Parser;
switch ($modx->event->name) {
case 'OnMODXInit':
$core = new Core($modx);
$core->debug->enabled = $modx->user->hasSessionContext('mgr') && !empty($_REQUEST['debug']);
$fetch = new Fetch($modx);
$modx->services->add('pdotools', $core);
$modx->services->add('pdofetch', $fetch);
$modx->services->add('parser', new Parser($modx, $core));
$modx->parser = $modx->services->get('parser');
break;
}Плагин можно отключить, или включить свой с расширенными версиями классов — я постарался это учесть в сниппетах.Как видно из кода, появился отдельный класс PDOTools\Parser\Debug — и это именно то, о чём вы подумали — встроенный DebugParser. Я не буду его переписывать для 3й версии MODX, теперь он живёт в pdoTools. Работает ровно так же, как и раньше — просто авторизуйтесь в админку и добавьте ?debug=1 к адресу нужной страницы на сайте.
Убран параметр nestedChunkPrefix, который был придуман еще до интеграции Fenom. Старожилы могут помнить странные чанки, где внизу были закомментированные куски для хитрого парсинга — вот это было оно. Думаю, что этим давно уже никто не пользуется, так что нечего тащить в новую версию.
Все сниппеты и классы по умолчанию работают с новыми моделями MODX. То есть, не $modx->getObject('modResource');, а
use MODX\Revolution\modResource;
$modx->getObject(modResource::class);Если делать не так — то будет много ошибок в логе системы о deprecated классах. Соответственно, в коде pdoTools переписано очень много всего и ошибки, наверняка, там сейчас есть. Ваша задача погонять сниппеты со своими выборками на тестовых сайтах и написать мне, где и когда что вылезает.
Так-то все сниппеты работают корректно с параметрами по умолчанию, но может что-то вылезти при подключении и сортировке по ТВ, например.
В связи с этим временно открываю issues на GitHub.
Новая версия pdoTools 3 уже на modstore.pro, а текущая alpha MODX 3 на modhost.pro
Комментарии: 25
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Помню, на Минском митапе ты говорил, что minishop 3 только на MODX 3.
Есть в планах? Или не особо уже интересно тебе?
Но обновить текущий ms2 для MODX 3 вполне по силам.
Все же у MODX 3 минимальная версия PHP 7.1.
Да и в документации чуть ниже таблички написано
Вначале увидел конкретную версию на этой странице документации.
А встретив эти же цифры здесь в табличке, дальше читать не стал.
Понял — не дурак — дурак бы не понял. Больше в документацию смотреть не буду ;-)
Они в ходят в комплект pdoTools!
Блин, как тебе на всё время хватает?
Ещё раз — спасибо!
А у Василия получается и свои дела делать и продолжать участвовать в жизни modx. Молодец.
Ровно такая же ситуация и с дополнениями. Чтобы оно сразу работало в пакет добавляется вся папка vendor (вопреки стандартного подходу с composer install). Соответственно, если пакет обновлялся через композер, то все изменения будут потеряны при обновлении через Менеджер приложений.
Вылетает ошибка при установке: «Невозможно установить пакет с подписью: pdotools-3.0.0-alpha1»
Как победить? На «альфе 1» пробовал ставить и использовать — все ОК.
Установка самого МОДХ3 чистая, нулевая
В консоле пишет:
Could not load class: MODX\Revolution\modNamespace from MODX\Revolution\.mysql.modx\revolution\modnamespace
Could not load vehicle!
Could not load class: MODX\Revolution\modCategory from MODX\Revolution\.mysql.modx\revolution\modcategory
Could not load vehicle!
Vehicle 512b90d7f9adb14e35e45a977b0003c3 in transport pdotools-3.0.0-alpha1 failed to install and indicated the process should be aborted.
Невозможно установить пакет с подписью: pdotools-3.0.0-alpha1
Подскажите пожалуйста, в чем может быть проблема?