sql >> Databasteknik >  >> RDS >> Mysql

Skillnader i procedurmässiga och objektorienterade implementeringar av mysql i php?

Svaret på vilken som är bättre är "det beror på". Som med allt annat finns det en mängd olika tillvägagångssätt och du bör också komma ihåg att kod som använder objekt inte nödvändigtvis är objektorienterad men kan fortfarande skrivas procedurmässigt. På samma sätt kan kod som inte använder objekt fortfarande vara modulär.

Jag skulle välja att använda mysqli klass varje gång dock. Det finns ingen signifikant skillnad i prestanda. Du kommer förmodligen inte att inse några av fördelarna med att använda en DB-klass som förenklad polymorfism, så mitt enda argument för att använda klassen är att jag föredrar syntaxen. Men istället för att använda mysqli direkt skulle jag nog rekommendera att du utökar eller komponerar den. Du kan bara göra detta med klassen.

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

Detta är ett mycket ytligt exempel.

Ett exempel på polymorfismen jag pratade om ovan skulle vara något sånt här:

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

Förresten, jag föredrar kategoriskt PDO över mysqli



  1. Hur får jag den aktuella tidszonen för MySQL?

  2. Visar bild från PostgreSQL-databas, bytea

  3. Varför är IS NOT NULL falsk när man kontrollerar en radtyp?

  4. Hur får man flera räkningar med en SQL-fråga?