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;
$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;
$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?