Отговорът кой е по-добър е "зависи". Както при всяко нещо, има разнообразие от различни подходи и трябва да имате предвид, че кодът, който използва обекти, не е непременно обектно ориентиран, но все пак може да бъде написан процедурно. В същия дух кодът, който не използва обекти, все още може да бъде модулен.
Бих избрал да използвам mysqli
клас всеки път обаче. Няма съществена разлика в производителността. Вероятно няма да осъзнаете някои от предимствата на използването на DB клас, като опростен полиморфизъм, така че единственият ми аргумент за използването на класа е, че предпочитам синтаксиса. Въпреки това, вместо да използвате mysqli
директно вероятно бих ви препоръчал да го разширите или съставите. Можете да направите това само с класа.
class DB extends mysqli {
public function __construct() {
parent::__construct($_SERVER['DB_HOST'],
$_SERVER['DB_USER'], $_SERVER['DB_PASS']);
}
}
Това е много плитък пример.
Пример за полиморфизма, за който говорих по-горе, би бил нещо подобно:
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);
Между другото аз категорично предпочитам PDO
през mysqli