Witam,

Mam obecnie w swojej aplikacji własną klasę obsługującą bazę danych.

Działa na zasadzie

Kod
$db = new Database();
  $db->connect();
  
$db->select('nazwa')->from('tabela')->where('id=5')->execute();
$name=$db->getResult();

echo $name;


Z klasy nie jestem do końca zadowolony, ale powiedzmy, że spełnia moje obecne potrzeby. Jest uniwersalna i przenośna (nie chodzi mi o przenośność między bazami, ale o gotowość do wykorzystania w innej aplikacji).


Zauważyłem jednak, że byłoby bardziej ładnie, prosto i "obiektowo" gdyby nałożyć na moją bazę jeszcze jedną warstwę abstrakcji. Coś, co skróciłoby powyższy kod do:
Kod
$dbManager = new DbManager();
$dbManager->getName(5);

echo $name;

Klasa DbManager rozszerzałaby wtedy klasę Database.

Klasa Database byłaby gotowa do pracy z dowolną bazą (tzn dowolnym egzemplarzem bazy mysql w tym przypadku) i dowolną aplikacją a klasa DbManager byłaby niejako pomostem między klasą Database i aplikacją.

Co sądzicie o takim rozwiązaniu? Nie jest to sztuka dla sztuki? A może to dobre rozwiązanie?

Chcę w miarę możliwości oddzielić obsługę danych od reszty. Do modelu MVC pewnie dużo brakuje, ale zawsze to jakiś krok w dobrym kierunku. Jakie rozwiązania polecacie do tgo celu?