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