sql >> Databasteknik >  >> RDS >> Mysql

Hur använder man $db från en annan .php till en annan .phps klass med OOP?

Det är bäst att skapa en DB klass eller utnyttja en redan skapad för att uppnå det du försöker göra.

Det vanliga flödet för saker som detta är call Lazy Loading/Dependency Injection . Där du skickar de nödvändiga objekten till klassen.

Som Ben sa i kommentarerna :

En sida som inte nämns ovan, det är bäst att titta på PHPTheRightWay , listar de en mycket av saker, inklusive Dependency Injection .

Du kommer att skapa något liknande. Det skulle vara bättre om du följde det här exemplet för att förstå hur det fungerar:

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 till det roliga. Att faktiskt injicera det i din klass;

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.
 

Om du bara vill dela resursen kan du utnyttja global , men det avråds starkt .

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. MySQL Great Circle Distance (Haversine-formel)

  2. mySQL ladda data lokal infil felaktigt nummerformat

  3. 4 sätt att hitta rader som innehåller små bokstäver i Oracle

  4. Hur du säkerhetskopierar din Moodle MariaDB-databas