JFactory::getDbo()-Ersatz ab Joomla 4
In Joomla 5 werden die Zeilen $db = Factory::getDbo();
bzw. $db = JFactory::getDbo();
für das Initialisieren eines Datenbank-Objekts (= Aufbau einer Datenbankverbindung) nicht mehr funktionieren. Deshalb werden sie schrittweise aus dem Joomla-4-Core entfernt; auch, um zahlreiche Deprecated-Meldungen (= Veraltet) aus den Joomla-Logs rauszubekommen. Die empfohlene, neue Schreibweisen-Variante geht jetzt so:
$db = Factory::getContainer()->get('DatabaseDriver');
--- bzw. Langschreibweise, falls keine ...\Factory-use-Zeile am Anfang der Datei:---
$db = \Joomla\CMS\Factory::getContainer()->get('DatabaseDriver');
Natürlich funktionieren die alten, aus Joomla 3 bekannten Schreibweisen weiterhin mit Joomla 4. Die neue funktioniert aber nicht unter Joomla 3.
Wer sich die Mühe machen möchte, kann eine Versions-Weiche in seinem Code verwenden:
<?php
defined('_JEXEC') or die;
# use-Zeile am Anfang der Datei:
use Joomla\CMS\Factory;
# ... später im Code dann:
if (version_compare(JVERSION, '4', 'lt'))
{
$db = Factory::getDbo();
}
else
{
$db = Factory::getContainer()->get('DatabaseDriver');
}