Решение, которое часто используется для классов, связанных с подключением к базе данных, заключается в работе с Singleton Design Pattern ( пример реализации в PHP ).
Это позволяет иметь класс, который будет инкапсулировать соединение с БД, и будет гарантировать, что только одно соединение будет открыто в течение всего времени жизни сценария PHP - никогда больше.
Это позволит вам использовать такой синтаксис, как этот:
$db = Db::getInstance();
$db->query('...');
Или:
Db::getInstance()->query('...');
Об автозагрузке: она будет работать, пока: есть способ сопоставить имя класса с файлом.