Mysql
 sql >> Database >  >> RDS >> Mysql

Come usare $db da un altro .php a un'altra classe .php usando OOP?

Faresti meglio a creare un DB classe o sfruttandone uno già creato per ottenere ciò che stai cercando di fare.

Il solito flusso per cose del genere è call Lazy Loading/Dependency Injection . Dove stai passando gli oggetti richiesti nella classe.

Come ha affermato Ben nei commenti :

Un lato diverso da quello sopra menzionato, sarebbe meglio guardare PHPTheRightWay , elencano un lotto di materiale, tra cui Iniezione di dipendenza .

Finirai per creare qualcosa di simile. Sarebbe meglio se seguissi questo esempio per capire come funziona:

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...
}
 

Ora arriviamo alle cose divertenti. Effettivamente iniettandolo nella tua 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 vuoi solo condividere la risorsa, puoi sfruttare global , ma ​​è fortemente sconsigliato .

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