"class connection{
private $db_name;
private $db_password;
private $db_username;
public function __construct($db_name,$db_password,$db_username){
$this->db_name=$db_name;
$this->db_password=$$db_password;
$this->db_username=$db_username;}}

class Model{
private $connection;
public function __construct(Connection $connection){
$this->connection=$connection;}

$connection=new Connection('db_name','root','root');
$model=new Model;"

Je ne comprends pas comment la connexion à la base de données peut marcher sans qu'il y ai écrit new PDO ; quelqu'un peut il m'expliquer? Merci

7 réponses


Curvata
Réponse acceptée

Merci de mettre le sujet en résolu.

BONJOUR,

en l'état ton code ne fonctionne pas.

Merci de formater ton code pour faciliter la lecture.

Merci mais, en occultant le fait que j'ai écrit deux $ à la ligne 7, pourrais tu me dire ce qu'il faut rajouter pour que ce code fonctionne et qu'il y ai connexion à la base de données? Merci

<?php

class connection{

    private $pdo;

    public function __construct($dns,$user,$password) 
    {
        $this->pdo = new PDO($dns,$user,$password);
    }

    public function getPDO()
    {
        return $this->pdo;
    }
}

class Model
{
    private $connection;

    public function __construct(Connection $connection)
    {
        $this->connection = $connection;
    }
}

$connection = new Connection('mysql:dbname=testdb;host=127.0.0.1','root','root');
$model = new Model($connection);

Merci beaucoup . Donc tu penses que si le code de celui qui a fait le tuto n'était pas complet c'était intentionnel de sa part?Genre que pour lui ce que tu as rajouté n'avait pas d'importance pour ce qu'il voulait expliquer, en l'occurrence le conteneur d'injection de dépendance?
Je te demande ça car j'ai du mal à intégrer qu'il ai écrit un code pas complet.
Mais comme je viens de te le dire peut etre qu'il s'en fiche que le code ne soit pas complet et qu'il ne fonctionne pas et qu'il veut juste expliquer la notion de conteneur de dépendance...
Est ce ton avis aussi (la phrase ci dessus) ?
(P.S : Si c'est on avis aussi cela n'est pas une critique de ma part pour celui qui a fait le tuto mais j'aimerais juste comprendre)

Je ne sais pas de quelle formation tu parles mais s'il veut t'expliquer les principes du conteneur d'injection de dépendance la connexion à la base de donné n'est pas forcément intégré dans le code, car ce n'est pas vraiment le but de la lecon.
Pour bien comprendre, il ne faut pas copier-coller les sources des formations, mais reproduire celui-ci afin de bien comprendre toutes les notions.
Un conteneur d'injection de dépendance, c'est simplement un objet qui contient les définitions pour pouvoir instancier une classe ou la résoudre avec ses dépendances. Quoi qu'il arrive, si tu veux une connexion à la base de donné il te faudra PDO derrière. Je te conseille de prendre le temps de bien suivre les formations PHP de Grafikart dans l'ordre, elles sont excellentes

Je connais PDO mais comme ça n'était pas utilisé dans le code (j'ai bien compris maintenant qu'un formateur peut écrire du code incomplet pour faire comprendre une notion) je me demandais (je ne me le demande plus maintenant) si il existait une autre façon de faire qu'avec PDO, par exemple je me demandais si new Connection était une autre façon de faire que new PDO.
En tout cas je te remercie ; tu as bien répondu à ma problématique