Mysql
 sql >> Base de données >  >> RDS >> Mysql

Différences dans les implémentations procédurales et orientées objet de mysql en php ?

La réponse à laquelle est meilleure c'est "ça dépend". Comme pour tout, il existe une variété d'approches différentes et vous devez également garder à l'esprit que le code qui utilise des objets n'est pas nécessairement orienté objet mais peut toujours être écrit de manière procédurale. Dans le même ordre d'idées, un code qui n'utilise pas d'objets peut toujours être modulaire.

Je choisirais d'utiliser le mysqli classe à chaque fois, cependant. Il n'y a pas de différence significative dans les performances. Vous ne réaliserez probablement pas certains des avantages de l'utilisation d'une classe DB telle que le polymorphisme simplifié, donc mon seul argument pour utiliser la classe est que je préfère la syntaxe. Cependant, plutôt que d'utiliser mysqli directement, je vous recommanderais probablement de l'étendre ou de le composer. Vous ne pouvez le faire qu'avec la classe.

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

Ceci est un exemple très superficiel.

Un exemple du polymorphisme dont je parlais ci-dessus serait quelque chose comme ceci :

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

D'ailleurs je préfère catégoriquement PDO sur mysqli