feat(fenom): Upgrade to Fenom 3.1 and ship pdoTools3 1.0.0 - #32
Open
Ibochkarev wants to merge 3 commits into
Open
feat(fenom): Upgrade to Fenom 3.1 and ship pdoTools3 1.0.0#32Ibochkarev wants to merge 3 commits into
Ibochkarev wants to merge 3 commits into
Conversation
Start the pdoTools3 package line (signature pdotools3) with PHP 8.2+, Fenom 3.1.0, typed providers, and native Fenom cache options. Drop the broken MODX compile-cache path and replace strftime with date for PHP 8.4+. Refs modx-pro/pdoTools#397
Ibochkarev
marked this pull request as ready for review
September 3, 2026 10:21
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #32 +/- ##
============================================
+ Coverage 26.66% 29.73% +3.06%
Complexity 1165 1165
============================================
Files 18 20 +2
Lines 3011 3003 -8
============================================
+ Hits 803 893 +90
+ Misses 2208 2110 -98 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Raise patch coverage for Fenom 3 provider signatures and the date()-based fuzzydate modifier flagged by Codecov on #32.
Avoid parent getModifier null Template TypeError, restore compile-dir file cache for useFenomCache, share Chunk/Template via ElementProvider with stable mtime, and map legacy strftime tokens through DateFormat.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Обновление Fenom до 3.1.0 и старт линейки пакета pdoTools3 с версии 1.0.0-pl.
Репозиторий уже держит дерево для MODX 3 (раньше 2.x и 3.x жили в одной репе, в разных ветках). Транспортный пакет при этом оставался под signature
pdotoolsс версиями 3.0–3.1.0. Если сбросить SemVer на 1.0.0 при том же имени, Package Manager увидит даунгрейд. Поэтому новый signature:pdotools3, отображаемое имя pdoTools3. Пути, сниппеты (pdoResourcesи остальные), настройки (pdotools_*) и namespaceModxPro\PdoTools\не меняются. Сайт может поставить пакет поверх тех же файлов и продолжить работу.Сайты на
pdoTools3.1.0 сами не обновятся. Нужно поставить pdoTools3, затем снять старую запись пакета. Старый листинг на extras пока не трогаем. Пометим superseded, когда будет готов текст миграции.Зачем Fenom 3.1 сейчас
В modx-pro/pdoTools#397 просили актуальную версию Fenom. 2.12.1 не загрузится как drop-in под 3.1.0:
setCompileDirиProviderInterfaceпоявились typed-сигнатуры_loadModifierдолжен возвращать?string, а не ClosuregetTemplateCode()и потом выполнял его через runtime evaluation. Typed-конструкторRenderв Fenom 3 этот путь ломает (на PHP 8 он и раньше был хрупким)Минимум PHP поднимаем до 8.2, как у Fenom 3.1. CI: 8.2–8.5. PHPUnit: 10.
Что поменялось в коде
fenom/fenom ^3.1, PHP>=8.2, PHPUnit^10Fenom::setCompileDir(string $dir): staticgetModifier(), override_loadModifierубранuseFenomCacheтолько переключает нативные опции файлового кэша Fenom (disable_cache/force_compile/auto_reload). Request-levelgetStore/setStoreостаётся. Старый MODX-путь кэша компиляции удалёнChunk/Templateреализуют typedProviderInterfaceFenom 3strftime()заменён наdate()в Fenomfuzzydateи pdoArchive (нужно для PHP 8.4+)modResource,modTemplateVar) →::classvendor/autoload.phpclassMapдля MiniShop3 черезmodResource::classFenomCacheTest,SnippetModifierTest. Unit suite зелёный (119 тестов)&loadModelsпо-прежнему зовёт xPDOaddPackage()изcomponents/<name>/model/. Это для старых extras. PSR-4 пакеты вроде MiniShop3 этот параметр не нужен.Идентичность пакета
pdotools3-1.0.0-pl.transport.zippdoTools3pdotoolsv1.0.0-plНа ревью: сигнатуры сабкласса Fenom, float/mtime контракты провайдеров, поведение при
pdotools_fenom_cache=1, и что release workflow собираетpdotools3-*.transport.zip.Refs modx-pro/pdoTools#397