Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar $db de outro .php para outra classe de .php usando OOP?


Seria melhor criar um DB classe ou aproveitando um já criado para alcançar o que você está tentando fazer.

O fluxo normal para coisas assim é chamar Lazy Loading/Dependency Injection . Onde você está passando os objetos necessários para a classe.


Como Ben afirmou nos comentários :


Um lado que não está no mencionado acima, é melhor você olhar para PHPTheRightWay , eles listam muito muito de coisas, incluindo Injeção de Dependência .

Você vai acabar criando algo como. Seria melhor se você seguisse este exemplo para entender como funciona:
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...
}
 



Agora vamos para as coisas divertidas. Na verdade, injetando-o em sua 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.
 

Se você quiser apenas compartilhar o recurso, poderá aproveitar global , mas é fortemente desencorajado .
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>");
        }
}