Заменяем устаревший метод 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);