xPDO.addPackage
Последнее обновление Apr 20th, 2021 | История страницы | Улучшить эту страницу | Сообщить о проблеме
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 morexPDO::addPackage¶
Этот метод используется для загрузки классов отображения ORD xPDO, которые определяют объекты вашего пакета. Соглашение MODX заключается в том, что эти классы хранятся в каталоге вашего пакета "model/". Загрузка этих классов позволяет xPDO взаимодействовать с вашим пользовательским объектом и расширением таблиц базы данных, которые они представляют. Функциональность отключена из файла metadata.inc.php в указанном каталоге ($path + $pkg
). Эти метаданные показывают, как MODX знает, какие имена классов активны и расширяют ли какие-либо классы основные классы. Конечный результат немного похож на функцию автозагрузки.
Синтаксис¶
API Docs: https://api.modx.com/revolution/2.2/db_core_xpdo_xpdo.class.html#\xPDO::addPackage()
boolean addPackage ([string $pkg = ''], [string $path = ''], [string $tablePrefix = ''])
-
$pkg
соответствует имени подпапки в указанном$path
. Подпапка содержит множество your_table.class.php файлов и чаще всего подпапку mysql, которая содержит дополнительные файлы карт и классов, например, your_table.class.php и your_table.map.inc.php -
$path
- это полный путь к папке, содержащей пакеты, включая имя пакета, на которое вы указали в первом аргументе. -
$tablePrefix
- префикс таблицы для вашего пакета. Вы ДОЛЖНЫ включать правильный префикс при вызове addPackage (т.е. во время выполнения), иначе ваш пакет не будет загружен правильно!
Важное замечание: значение префикса таблиц базы данных $tablePrefix
для вашего пакета должно! совпадать с общепринятым префиксом для всех таблиц базы данных MODX, иначе вы можете получить далеко идущие последствия в виде ошибок.
Префикс MODX можно и нужно менять (например, для Усиления защиты), главное помнить, что префикс в пакете и в MODX должны совпадать. Если вы не очень понимаете, о чем идет речь, не указывайте этот параметр $tablePrefix
, в этом случае будет использовано значение по умолчанию - _modx
Функция addPackage
возвращает true в случае успеха и false при ошибке. Проверьте логи на ошибку.
Пример¶
Чаще всего это использует константу MODX_CORE_PATH
и указывает на каталог вашего пакета "model/":
$modx->addPackage('mypkg',MODX_CORE_PATH.'components/mypkg/model/','mypkg_');
Другой пример¶
Изображенная структура файла сниппета FormIt.
Если бы вы должны были загрузить один из его пакетов с помощью метода addPackage ()
, вы могли бы использовать один из трех доступных пакетов (formit, recaptcha или stopforumspam) в качестве первого аргумента, а путь к папке, содержащей его, в качестве второго. аргумент, например
$xpdo->addPackage('recaptcha', MODX_CORE_PATH.'components/formit/model/');
Тестирование¶
$xpdo->setLogLevel(xPDO::LOG_LEVEL_INFO);
$xpdo->setLogTarget('ECHO');
if (!$xpdo->addPackage('my_package','/path/to/docroot/core/components/my_package/model/','pkg_')) {
print 'Возникли проблемы при установке вашего пакета';
}
$path
(2-й аргумент) должен существовать, иначе будет зарегистрирована ошибка. Но если 1-й аргумент $pkg
не является подпапкой внутри $path
, ошибка не выдается.
При сбое эта функция записывает подробные сообщения об ошибках в журнал.
Добавление пакетов из других баз данных¶
Метод addPackage()
работает с любым экземпляром объекта xPDO, который имеет допустимые файлы классов и карт. Если вам нужно подключиться к другой базе данных, создайте новый экземпляр xPDO, используя действительные критерии входа в систему, например, как описано здесь: Соединения с базой данных и xPDO
Создание таблиц¶
Недостаточно просто загрузить пакет и его классы PHP. Если ваш пакет определяет таблицы базы данных, возможно, вам придется создать таблицы. Обычно это делается для вас, когда вы устанавливаете пакет, но если вы делаете что-то вручную, вы захотите взглянуть на функцию xPDOManager.createObjectContainer.
Смотрите также¶
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