Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unterschiede in prozeduralen und objektorientierten Implementierungen von MySQL in PHP?

Die Antwort darauf, welche besser ist ist "es kommt darauf an." Wie bei allem gibt es eine Vielzahl unterschiedlicher Ansätze, und Sie sollten auch bedenken, dass Code, der Objekte verwendet, nicht unbedingt objektorientiert ist, sondern dennoch prozedural geschrieben werden kann. Ebenso kann Code, der keine Objekte verwendet, immer noch modular sein.

Ich würde mich für mysqli entscheiden Klasse aber immer. Es gibt keinen signifikanten Unterschied in der Leistung. Sie werden wahrscheinlich einige der Vorteile der Verwendung einer DB-Klasse wie vereinfachtem Polymorphismus nicht erkennen, daher ist mein einziges Argument für die Verwendung der Klasse, dass ich die Syntax bevorzuge. Anstatt jedoch mysqli zu verwenden Direkt würde ich wahrscheinlich empfehlen, dass Sie es erweitern oder komponieren. Das geht nur mit der Klasse.

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

Dies ist ein sehr flaches Beispiel.

Ein Beispiel für den Polymorphismus, über den ich oben gesprochen habe, wäre ungefähr so:

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

Übrigens bevorzuge ich PDO kategorisch über mysqli