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

Hvordan bruger man $db fra en anden .php til en anden .phps klasse ved hjælp af OOP?

Du ville være bedst at oprette en DB klasse eller udnytte en allerede oprettet en for at opnå det, du prøver at gøre.

Det sædvanlige flow for ting som dette er call Lazy Loading/Dependency Injection . Hvor du sender de nødvendige objekter ind i klassen.

Som Ben sagde i kommentarerne :

En side, der ikke er på ovennævnte, ville være bedst at se på PHPTheRightWay , de viser en masse af ting, inklusive Dependency Injection .

Du ender med at skabe noget lignende. Det ville være bedre, hvis du fulgte dette eksempel for at forstå, hvordan det fungerer:

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

Nu kommer vi til de sjove ting. Faktisk injicerer det i din klasse;

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.
 

Hvis du bare vil dele ressourcen, kan du udnytte global , men det frarådes kraftigt .

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



  1. Sådan vender du rækkefølgen af ​​tegn i en streng i MySQL

  2. HTML-formular fungerer som get i stedet for post

  3. Codeigniter:Kolonne 'id' i rækkefølgen er tvetydig

  4. Sådan åbnes en tabel i designvisning i Microsoft Access