Odpowiedź, która jest lepsza to „to zależy”. Jak ze wszystkim, istnieje wiele różnych podejść i należy również pamiętać, że kod używający obiektów niekoniecznie jest zorientowany obiektowo, ale nadal można go napisać proceduralnie. W tym samym duchu kod, który nie używa obiektów, może nadal być modułowy.
Wybrałbym użycie mysqli
klasę za każdym razem. Nie ma znaczącej różnicy w wydajności. Prawdopodobnie nie zdasz sobie sprawy z niektórych zalet używania klasy DB, takich jak uproszczony polimorfizm, więc moim jedynym argumentem za używaniem klasy jest to, że wolę składnię. Jednak zamiast używać mysqli
bezpośrednio poleciłbym prawdopodobnie rozszerzenie lub skomponowanie go. Możesz to zrobić tylko z klasą.
class DB extends mysqli {
public function __construct() {
parent::__construct($_SERVER['DB_HOST'],
$_SERVER['DB_USER'], $_SERVER['DB_PASS']);
}
}
To bardzo płytki przykład.
Przykładem polimorfizmu, o którym mówiłem powyżej, może być coś takiego:
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);
Swoją drogą kategorycznie wolę PDO
ponad mysqli