sql >> Databáze >  >> RDS >> Mysql

Jak použít $db z jiného .php do jiné .php třídy pomocí OOP?

Nejlepší by bylo vytvořit DB třída nebo využití již vytvořeného k dosažení toho, oč se snažíte.

Obvyklý postup pro takové věci je volání Lazy Loading/Dependency Injection . Kde předáváte požadované objekty do třídy.

Jak uvedl Ben v komentářích :

Na straně, která není na výše uvedené, byste se měli nejlépe podívat na PHPTheRightWay , vyjmenovávají hodně věcí, včetně Dependency Injection .

Nakonec vytvoříte něco jako. Bylo by lepší, kdybyste se řídili tímto příkladem, abyste pochopili, jak to funguje:

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

Nyní se dostáváme k zábavným věcem. Vlastně to vložíte do vaší třídy;

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.
 

Pokud chcete pouze sdílet zdroj, můžete využít global , ale důrazně to nedoporučujeme .

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 FIND_IN_SET() nefunguje podle očekávání

  2. Nelze spustit server:Svázat na portu TCP/IP:Nelze přiřadit požadovanou adresu

  3. Uložte IPv6 do databáze

  4. Jak chránit databáze MySQL před ransomwarovými kampaněmi