Jesli na pewno (na 100%) bedziesz uzywal jednej bazy to mozesz zrobic singletona, wtedy taka galeria czy cokolwiek latwo sobie znajdzie obiekt polaczenia z baza.
Dla dwu i wiecej baz - zaczyna sie fajna zabawa, bo musisz wskazywac, ktorej bazy uzyc przy danej operacji (zaladowania, updejtu, kasowania, dodawania), obiekty musza wiedziec z ktorej bazy sa, itd. Wzorzec:
http://martinfowler.com/eaaCatalog/unitOfWork.html ,
Przyklad dla Doctrine
http://209.85.129.132/search?q=cache:e3eTT...mp;client=operaA w Propelu wyglada to tak (no chyba ze maja cos jeszcze - nie znam, nie zagladalem do dokumentacji)
http://www.lampjunkie.com/2008/04/using-mu...ny-with-propel/ <?php
$c = new Criteria();
$articles = ArticlePeer::doSelect($c, Propel::getConnection('slave'));
// save an article in the master database (explicitly setting the connection name)
$article = new Article();
$article->setTitle('Symfony Rocks!!!');
$article->save(Propel::getConnection('propel');
?>
Cytat
W opisanym przeze mnie sposobie nie muszę już tworzyć obiektu klasy klasaPolaczenie, wystarczy, że stworzę obiekt np. klasy klasaGaleria - więc zamiast tworzyć dwa obiekty - wystarczy jeden - nie wiem tylko czy to rozwiązanie jest ok
I nie dziedzicz galeria po klasie bazy danych. Lepiej pobrac w niej singletona polaczenia z baza. Ten singleton sam sie polaczy przy pierwszym tworzeniu jego obiektu.
A co do dziedziczenia: stworz klase Core, gdzie wrzucisz wszystko: obsluge bazy, szablonow, model, akcje, sesje, wysylke emaili a potem dziedzicz Galeria extends Core - podoba ci sie to? a wlasnie w tym kierunku zmierzasz