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

Rozdíly v procedurálních a objektově orientovaných implementacích mysql v php?

Odpověď, která z nich je lepší je "záleží." Jako u všeho existuje celá řada různých přístupů a měli byste také mít na paměti, že kód, který používá objekty, nemusí být nutně objektově orientovaný, ale stále může být napsán procedurálně. Ve stejném duchu může být kód, který nepoužívá objekty, stále modulární.

Rozhodl bych se použít mysqli třída pokaždé. Ve výkonu není žádný výrazný rozdíl. Pravděpodobně si neuvědomíte některé výhody použití třídy DB, jako je zjednodušený polymorfismus, takže můj jediný argument pro použití třídy je, že preferuji syntaxi. Místo toho však použijte mysqli přímo bych ti to asi doporučil rozšířit nebo složit. Můžete to udělat pouze se třídou.

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

Toto je velmi povrchní příklad.

Příklad polymorfismu, o kterém jsem mluvil výše, by byl něco takového:

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

Mimochodem, kategoricky preferuji PDO přes mysqli



  1. Nelze získat jarní spouštění pro automatické vytvoření schématu databáze

  2. Oracle SQL PIVOT Table

  3. Aktualizujte konfigurační soubor pomocí nového nastavení databáze

  4. Jak vybrat jeden řádek náhodně s ohledem na váhu?