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

Forskelle i proceduremæssige og objektorienterede implementeringer af mysql i php?

Svaret på, hvilken der er bedre er "det kommer an på." Som med alt er der en række forskellige tilgange, og du bør også huske på, at kode, der bruger objekter, ikke nødvendigvis er objektorienteret, men stadig kan skrives proceduremæssigt. På samme måde kan kode, der ikke bruger objekter, stadig være modulær.

Jeg ville vælge at bruge mysqli klasse hver gang dog. Der er ingen væsentlig forskel i ydeevne. Du vil sandsynligvis ikke indse nogle af fordelene ved at bruge en DB-klasse, såsom forenklet polymorfi, så mit eneste argument for at bruge klassen er, at jeg foretrækker syntaksen. Men i stedet for at bruge mysqli direkte vil jeg nok anbefale, at du udvider eller komponerer den. Du kan kun gøre dette med klassen.

class DB extends mysqli {
    public function __construct() {
        parent::__construct($_SERVER['DB_HOST'],
            $_SERVER['DB_USER'], $_SERVER['DB_PASS']);
    }
}

Dette er et meget overfladisk eksempel.

Et eksempel på den polymorfi, jeg talte om ovenfor, ville være noget som dette:

class User implements DAO {
    private $db;
    public function __construct(DB $db) {
        $this->db = $db;
    }
}

//Testing code is simplified compared to using it in production
class TestDB extends DB {}
new User(new TestDB);
new User(new DB);

Jeg foretrækker i øvrigt kategorisk PDO over mysqli



  1. Hvordan kan jeg konvertere en SQL Server 2008 DateTimeOffset til en DateTime

  2. gem postgresql resultat i bash variabel

  3. PHP bruger regex til at loope og forespørge på mysql for at udskrive en excel-fil

  4. MySQL boolean - spejlvende værdien?