Mysql
 sql >> Database >  >> RDS >> Mysql

Differenze nelle implementazioni procedurali e orientate agli oggetti di mysql in php?

La risposta a quale è migliore è "dipende". Come per qualsiasi cosa, ci sono una varietà di approcci diversi e dovresti anche tenere presente che il codice che utilizza oggetti non è necessariamente orientato agli oggetti ma può comunque essere scritto proceduralmente. Allo stesso modo, il codice che non utilizza oggetti può essere ancora modulare.

Sceglierei di usare mysqli classe ogni volta, però. Non ci sono differenze significative nelle prestazioni. Probabilmente non ti renderai conto di alcuni dei vantaggi dell'utilizzo di una classe DB come il polimorfismo semplificato, quindi il mio unico argomento per l'utilizzo della classe è che preferisco la sintassi. Tuttavia, invece di usare mysqli direttamente probabilmente consiglierei di estenderlo o comporlo. Puoi farlo solo con la classe.

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

Questo è un esempio molto superficiale.

Un esempio del polimorfismo di cui parlavo sopra sarebbe qualcosa del genere:

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 proposito, preferisco categoricamente PDO su mysqli