Заменяем устаревший метод Joomla\CMS\Table\Table::getInstance в Joomla 5.1.4.
Раньше объект таблицы создавали методом getInstance класса Joomla\CMS\Table\Table.
<?php $table = Joomla\CMS\Table\Table::getInstance('Content', 'Table');
Если класс таблицы принадлежал компоненту, то мы подключали папку с таблицами этого компонента.
Например, так создаётся объект таблицы Featured:
<?php Joomla\CMS\Table\Table::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/table'); $featured = Table::getInstance('featured', 'ContentTable');
Но начиная с версии 4.3 метод getInstance объявлен устаревшим и будет удален в версии 6.0. В качестве подсказки разработчики предлагают следующий пример.
/** * Example: Factory::getApplication()->bootComponent('...')->getMVCFactory()->createTable($name, $prefix, $config); */
Перепишем код для создания объекта таблицы Featured.
Было:
<?php Joomla\CMS\Table\Table::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/table'); $featured = Table::getInstance('Featured', 'ContentTable');
Стало:
<?php $table = Joomla\CMS\Factory::getApplication() ->bootComponent('com_content') ->getMVCFactory()->createTable('Featured', 'Administrator');
А вот как быть с таблицами ядра, например, Content? Ответ оказался очень прост - использовать конструктор класса.
Было:
<?php $table = Joomla\CMS\Table\Table::getInstance('Content', 'Table');
Стало:
<?php $table = new Joomla\CMS\Table\Content($db);
