Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser $db d'un autre .php vers une autre classe .php en utilisant la POO ?

Vous feriez mieux de créer une DB ou en exploitant une classe déjà créée pour réaliser ce que vous essayez de faire.

Le flux habituel pour des choses comme celle-ci est d'appeler Lazy Loading/Dependency Injection . Où vous passez les objets requis dans la classe.

Comme Ben l'a dit dans les commentaires :

Un côté pas sur ce qui précède, vous feriez mieux de regarder PHPLeRightWay , ils en répertorient beaucoup de choses, y compris injection de dépendance .

Vous finirez par créer quelque chose comme. Il serait préférable que vous suiviez cet exemple pour comprendre comment cela fonctionne :

Class DB {

    function __construct($host, $user, $pass, $db) { 
        return $this->connect($host, $user, $pass, $db); 
    }

    function connect($host, $user, $pass, $db) {
        //..connect and all.
    }

    //...the rest of your functions/class...
}
 

Passons maintenant aux choses amusantes. En fait, l'injecter dans votre classe ;

Class Foo {

    $private $db;

    // your construct method here will ONLY except a `DB` class instance/object as $db. 
    // Try it with anything else and learn from the errors to understand what I mean.
    function __construct(DB $db){
        $this->db = $db;
    }

}

$db = new DB($host, $user, $pass, $db);
// you can error check it here

$foo = new Foo($db);// inject the $db object.
 

Si vous souhaitez simplement partager la ressource, vous pouvez exploiter global , mais c'est fortement déconseillé .

include('connection.db.php');

class MySQLqueries {
        public function samplefunction($queryString) {
            global $db;
            $sqlQry = mysqli->query($queryString);

            return ($sqlQry) ? "<pre>Query Executed Successfully</pre>" : die("<pre>An error occured -> $db->error</pre>");
        }
}