Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> pytanie o związek między klasą odpowiedzialną za połączenie z bazą danych a resztą klas
nieraczek
post 21.04.2009, 18:08:17
Post #1





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

Ostrzeżenie: (0%)
-----


Moje pytanie wynika z ciekawości. Mamy klasę np. klasaPolaczenie bedaca singletonem odpowiadającą za łączenie z bazą danych, wykonywanie zapytań itd.. Klasa ta jest singletonem więc jest finalna więc nie mozna po niej dziedziczyc.
I mam pytanie czy Wy w innych klasach wymagających dostępu do bazy danych, np. w klasie klasaGaleria, która mogłaby robić różne rzeczy związane z obrazkami, w tym niektore wymagajace dostepu do bazy danych, tworzycie obiekt klasy klasaPolaczenie w konstruktorach takich klas jak np. w konstruktorze klasaGaleria czy postepujecie jakos inaczej ? smile.gif Bo ja tak robię i może robię wbrew jakimś standardom tongue.gif

Ten post edytował nieraczek 21.04.2009, 18:10:21
Go to the top of the page
+Quote Post
nieraczek
post 21.04.2009, 19:10:05
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

Ostrzeżenie: (0%)
-----


Tak - nie używam MVC.
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 smile.gif
Go to the top of the page
+Quote Post
ayeo
post 22.04.2009, 03:16:43
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


Witam!

Najprostsze rozwiązanie to wzorzec Singleton lub Registry.

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 22.04.2009, 07:46:20
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


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=opera


A 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/
  1. <?php
  2. $c = new Criteria();
  3. $articles = ArticlePeer::doSelect($c, Propel::getConnection('slave'));
  4.  
  5. // save an article in the master database (explicitly setting the connection name)
  6. $article = new Article();
  7. $article->setTitle('Symfony Rocks!!!');
  8.  
  9. $article->save(Propel::getConnection('propel');
  10. ?>


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 winksmiley.jpg

Ten post edytował dr_bonzo 22.04.2009, 07:48:11


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 10:33