Lamentablemente los temas se repiten y -probablemente- las respuestas también
Algunos puntos
1) Si tus clases deben conectarse a una base de datos, deberías tener una clase para eso, y el tema de conexión debe ser un problema interno de la clase que maneje la base de datos, no debes pasarle ese problema a las demás clases (
"Principio de Ocultación").
2) Si quieres asegurarte que no exista más de una conexión, deberás implementar el patrón Singleton dentro de tu clase de persistencia. No es complicado y ya existe un ejemplo
en el manual oficial de PHP.
Atención: la conexión será única dentro de la instancia de una página para un usuario, no para todas las páginas y todos los usuarios (tema "stateless").
3) Lo normal es que en algún momento necesites separarlo en capas (lo básico serían 3), aunque no sepas qué son
. Deberías tener una clase que solo resuelve los problemas de un tema del sistema y otra para ese mismo tema, pero solo la persistencia.
Por ejemplo: ¿Tú sistema tiene que manejar usuarios?
Deberías tener una clase Usuarios que resuelva todas las necesidades de tu sistema cuando quiere usar los usuarios, pero, cuando la clase Usuarios debe persistir esa información, debería tratar con una clase UsuariosPersistencia que tiene internamente las sentencias SQL, pero -muy importante- no tiene el detalle de a donde se conecta, ahí entra tu clase de abstracción de base de datos.
Usuario.php -> UsuarioPersistencia.php -> BaseDeDatos.php
Todos los caminos nos llevan hacia el mismo lado: diseño en 3 capas, clase de persistencia, fachadas, etc.