sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo usar $db de otro .php a otra clase de .php usando OOP?

Sería mejor crear un DB clase o aprovechar una ya creada para lograr lo que está tratando de hacer.

El flujo habitual para cosas como esta es llamar a Lazy Loading/Dependency Injection . Donde está pasando los objetos requeridos a la clase.

Como dijo Ben en los comentarios :

Un lado que no esté en el mencionado anteriormente, sería mejor mirar PHPTheRightWay , enumeran mucho mucho de cosas, incluyendo Inyección de dependencia .

Terminarás creando algo como. Sería mejor si siguieras este ejemplo para entender cómo 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...
}
 

Ahora llegamos a las cosas divertidas. Realmente inyectándolo en tu clase;

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 solo desea compartir el recurso, puede aprovechar global , pero se desaconseja encarecidamente .

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>");
        }
}