Pull to refresh

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

Tags:
Total votes 3: ↑2 and ↓1+3
Comments0

Articles