Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich $db von einer anderen .php-Klasse in eine andere .php-Klasse mit OOP?

Am besten erstellen Sie eine DB Klasse oder nutzen Sie eine bereits erstellte Klasse, um das zu erreichen, was Sie erreichen möchten.

Der übliche Ablauf für solche Dinge ist der Aufruf Lazy Loading/Dependency Injection . Wo Sie die erforderlichen Objekte an die Klasse übergeben.

Wie Ben in den Kommentaren angegeben hat :

Eine Seite, die nicht zu den oben genannten gehört, ist am besten PHPTheRightWay , listen sie viel auf von Sachen, einschließlich Dependency Injection .

Sie werden am Ende so etwas wie erstellen. Es wäre besser, wenn Sie diesem Beispiel folgen, um zu verstehen, wie es funktioniert:

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

Jetzt kommen wir zu den lustigen Sachen. Injizieren Sie es tatsächlich in Ihre 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.
 

Wenn Sie die Ressource nur teilen möchten, können Sie global verwenden , aber es wird dringend davon abgeraten .

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