Bonjour à tous ,

Je suis en train de créer un site en respectant l'architecture MVC.
J'ai suivi tous les tutos POO mais j'ai du mal avec l'un des concept abordé.
Dans le tp on déclare une classe MysqlDatabase qui hérite de Database qui est elle même vide (je comprends que cette classe sers au cas on voudrais se connecter avec plusieurs DB).
Ensuite on créer une classe Config qui charge un fichier Congif (Notre Singleton)
Enfin dans la classe App (et c'est ici que je rencontre mon soucis)

    public function getDb(){
        $config = Config::getInstance(ROOT . '/config/config.php');
        if(is_null($this->db_instance)){
            $this->db_instance = new MysqlDatabase($config->get('db_name'), $config->get('db_user'), $config->get('db_pass'), $config->get('db_host'));
        }
        return $this->db_instance;
    }

Alors je comprends le fait de récupérer l'instance de notre singleton dans une variable, mais pourquoi crée un objet MysqlDatabase alors que nous possédons déja les informations?

2 réponses


Huggy
Réponse acceptée

C'est pour faire un couplage faible
Si tu décides de changer de SGBD, il suffit de modifier qu'à un seul endroit, remplacer MysqlDataBase par PostgresDatabase par exemple
On pourrait faire encore mieux avec de l'injection de dépendance.

Bonjour,

On créé l'objet uniquement si on ne l'a pas deja dans $this->db_instance