sql >> Database >  >> RDS >> Mysql

Hoe gebruik je $db van een andere .php naar een andere .php-klasse met behulp van OOP?

U kunt het beste een DB maken klasse of gebruik een reeds gemaakte om te bereiken wat je probeert te doen.

De gebruikelijke procedure voor dit soort dingen is call Lazy Loading/Dependency Injection . Waar u de vereiste objecten doorgeeft aan de klas.

Zoals Ben al zei in de opmerkingen :

Een kant die niet op de hierboven genoemde staat, je kunt het beste kijken op PHPTheRightWay , ze vermelden een veel van dingen, waaronder Dependency Injection .

Uiteindelijk creëer je zoiets als. Het zou beter zijn als u dit voorbeeld zou volgen om te begrijpen hoe het werkt:

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 komen we bij de leuke dingen. Het daadwerkelijk in je klas injecteren;

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.
 

Als u alleen de bron wilt delen, kunt u global . gebruiken , maar het wordt sterk afgeraden .

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 TAN() Functie – Retourneer de tangens van een waarde in MySQL

  2. Oracle PL/SQL - Verzamelingen (geneste tabellen)

  3. De Oracle-instantie afsluiten en starten

  4. Hoe importeer ik een SQL Server .bak-bestand in MySQL?