Изменение Имен Классов
Последнее обновление Jan 30th, 2020 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$301 per month—let's make that $500!
Learn moreЧтобы реализовать пространства имен и понять смысл определенного кода, многие файлы и классы были переименованы и перемещены в 3.0. Это приводит к потенциальным нарушающим изменениям.
В некоторых случаях вы можете столкнуться с предупреждениями или ошибками (включая фатальные ошибки):
- при использовании прямых операторов
include
/require
, нацеленных на любой соответствующий файл, которого больше нет - при расширении одного из этих классов
- когда тип намекает против этих классов
Примечание о моделях и классах обслуживания¶
Большинство классов моделей и служб, которые загружаются через $modx->loadClass
(который включает в себя конструктор запросов xPDO для классов моделей) или $modx->getService
будет по-прежнему работать, так как loadClass
внутренне переводит их в свои новые имена классов.
Для примера $modx->getIterator('modResource')
все равно будет работать - пока, хотя \modResource
класс сейчас \MODX\Revolution\modResource
.
Это будет регистрировать устаревшее сообщение в журнале ошибок, призывающее вас обновить ссылку. Правильный вызов был бы $modx->getIterator(\MODX\Revolution\modResource::class)
.
Важно отметить, что если вы проверяете тип результат такого вызова (например if ($foo instanceof modResource)
), вы не можете сразу столкнуться с ошибкой (по сравнению с typehinting, например public function(modResource $foo)
, что действительно вызывает ошибку), но это будет оценивать к false
потому что старое имя класса больше не существует, так что проверка всегда терпит неудачу.
Вы можете ввести проверку против несуществующих классов без предупреждения в PHP, поэтому вы можете решить это путем проверки типов для имени класса 2.x и 3.0. (например, if (($foo instanceof modResource) || $foo instanceof \MODX\Revolution\modResource))
Мягкие Изменения¶
Следующие имена классов были изменены, но были псевдонимы в версии 3.0, чтобы облегчить проблемы обновления, поскольку они обычно используются. Псевдонимы автоматически находятся в modX::loadConfig
, если load_deprecated_global_class_aliases
равно true, что по умолчанию. Это можно отключить, добавив ключ со значением false
в ваши $config_options
в core/config/config.inc.php
.
Псевдонимы больше не будут автоматически доступны в MODX 3.3. Если вы еще не обновили соответствующий код к тому времени, вы можете вручную потребовать core/include/deprecated.php
чтобы временно решить эту проблему, но вы все равно должны обновить код до новых классов.
Этот уровень обратной совместимости, вероятно, будет полностью удален в MODX 4.0.
xPDO¶
Новый класс | Старый класс |
---|---|
\xPDO\xPDO | \xPDO |
\xPDO\Om\xPDOCriteria | \xPDOCriteria |
\xPDO\Om\xPDOSimpleObject | \xPDOSimpleObject |
\xPDO\Om\xPDOQuery | \xPDOQuery |
\xPDO\Om\xPDOObject | \xPDOObject |
\xPDO\Cache\xPDOCacheManager | \xPDOCacheManager |
\xPDO\Cache\xPDOFileCache | \xPDOFileCache |
\xPDO\Transport\xPDOTransport | \xPDOTransport |
\xPDO\Transport\xPDOObjectVehicle | \xPDOObjectVehicle |
Ядро и процессоры MODX¶
Новый класс | Старый класс |
---|---|
\MODX\Revolution\modX | \modX |
\MODX\Revolution\modProcessor | \modProcessor |
\MODX\Revolution\modObjectProcessor | \modObjectProcessor |
\MODX\Revolution\modObjectCreateProcessor | \modObjectCreateProcessor |
\MODX\Revolution\modObjectExportProcessor | \modObjectExportProcessor |
\MODX\Revolution\modObjectGetListProcessor | \modObjectGetListProcessor |
\MODX\Revolution\modObjectGetProcessor | \modObjectGetProcessor |
\MODX\Revolution\modObjectImportProcessor | \modObjectImportProcessor |
\MODX\Revolution\modObjectRemoveProcessor | \modObjectRemoveProcessor |
\MODX\Revolution\modObjectSoftRemoveProcessor | \modObjectSoftRemoveProcessor |
\MODX\Revolution\modObjectUpdateProcessor | \modObjectUpdateProcessor |
\MODX\Revolution\modParsedManagerController | \modParsedManagerController |
\MODX\Revolution\modObjectDuplicateProcessor | \modObjectDuplicateProcessor |
\MODX\Revolution\modExtraManagerController | \modExtraManagerController |
Классы моделей MODX¶
Новый класс | Старый класс |
---|---|
\MODX\Revolution\modResource | \modResource |
Процессоры¶
Все процессоры были переименованы и перемещены, включая базовые классы процессоров. Процессоры с плоскими файлами также больше не поддерживаются. Смотрите документацию по выделенным процессорам
Измененные классы, без пути обновления¶
Все остальные модели и классы обслуживания не включают автоматический псевдоним. Это включает в себя утилиты, такие как парсер (\MODX\Revolution\modParser
)
Удаленные классы¶
Эти классы были навсегда удалены из 3.0 без альтернативы:
-
modDeprecatedProcessor
-
modParser095
-
modTranslate095
-
modTranslator
- All classes and functions related to the
xmlrss
service/utility:Snoopy
,MagpieRSS
,modRSSParser
,RSSCache
, functionparse_w3cdtf
, functionfetch_rss
. To fetch RSS feeds, you can now use SimplePie. - All classes and functions related to the
xmlrpc
andjsonrpc
services/utilities:modXMLRPCResponse
,modJSONRPCResponse
,modXMLRPCResource
(+ platform classes),modJSONRPCResource
(+ platform classes) -
modManagerControllerDeprecated
Изменения подписи¶
-
modResponse::_construct
(и унаследовалmodManagerResponse
/modConnectorResponse
) теперь помечен как «открытый» и больше не содержит амперсанд, поскольку объекты всегда передаются по ссылке. -
Processor::getInstance
иmodManagerController::getInstance
больше не использовать амперсанд для передачи modX в качестве ссылки.
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$301 per month—let's make that $500!
Learn more