JFactory
a une méthode getDbo
, mais pas de setDbo
. Pourquoi? Il peut être utile pour les tests unitaires de pouvoir écraser le pilote de base de données global. Une autre façon de faire ça?
EDIT:$database
est une propriété publique de JFactory
, je peux donc simplement l'écraser de la manière suivante:
$myDatabase = new JDatabaseDriver ...
JFactory::$database = $myDatabase;
Vous pouvez définir le pilote de base de données, mais pas avec une fonction simple (que je sache), telle que setDbo
.
Si vous regardez le paquet Joomla Database Framework :
use Joomla\Database;
class MyApplication extends AbstractApplication
{
protected $db;
protected function initialise()
{
// Make the database driver.
$dbFactory = new Database\DatabaseFactory;
$this->db = $dbFactory->getDriver(
$this->get('database.driver'),
array(
'Host' => $this->get('database.Host'),
'user' => $this->get('database.user'),
'password' => $this->get('database.password'),
'port' => $this->get('database.port'),
'socket' => $this->get('database.socket'),
'database' => $this->get('database.name'),
)
);
}
}
Vous pouvez donc remplacer $this->get('database.driver')
par le pilote dont vous avez besoin.