Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Diferenças nas implementações procedurais e orientadas a objetos do mysql em php?


A resposta para qual é melhor é "depende". Como com qualquer coisa, há uma variedade de abordagens diferentes e você também deve ter em mente que o código que usa objetos não é necessariamente orientado a objetos, mas ainda pode ser escrito processualmente. Da mesma forma, o código que não usa objetos ainda pode ser modular.

Eu escolheria usar o mysqli classe todas as vezes, no entanto. Não há diferença significativa no desempenho. Você provavelmente não perceberá algumas das vantagens de usar uma classe de banco de dados, como polimorfismo simplificado, então meu único argumento para usar a classe é que prefiro a sintaxe. No entanto, em vez de usar mysqli diretamente, eu provavelmente recomendaria que você o estendesse ou compusesse. Você só pode fazer isso com a classe.
class DB extends mysqli {
    public function __construct() {
        parent::__construct($_SERVER['DB_HOST'],
            $_SERVER['DB_USER'], $_SERVER['DB_PASS']);
    }
}

Este é um exemplo muito superficial.

Um exemplo do polimorfismo que eu estava falando acima seria algo assim:
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);

A propósito, prefiro categoricamente PDO sobre mysqli