sql >> Base de Datos >  >> RDS >> Mysql

¿Diferencias en las implementaciones procesales y orientadas a objetos de mysql en php?

La respuesta a cuál es mejor es "depende". Como con cualquier cosa, hay una variedad de enfoques diferentes y también debe tener en cuenta que el código que usa objetos no está necesariamente orientado a objetos, pero aún puede escribirse de manera procedimental. Del mismo modo, el código que no utiliza objetos puede seguir siendo modular.

Elegiría usar el mysqli clase cada vez, sin embargo. No hay una diferencia significativa en el rendimiento. Probablemente no se dé cuenta de algunas de las ventajas de usar una clase DB como el polimorfismo simplificado, por lo que mi único argumento para usar la clase es que prefiero la sintaxis. Sin embargo, en lugar de usar mysqli directamente, probablemente recomendaría que lo amplíes o lo compongas. Solo puedes hacer esto con la clase.

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

Este es un ejemplo muy superficial.

Un ejemplo del polimorfismo del que hablé anteriormente sería algo como esto:

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

Por cierto, prefiero categóricamente PDO sobre mysqli