![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 9 Dołączył: 25.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Ogarnąłem już PDO i używam statycznej zmiennej do połączenia się z bazą. Tutaj przykładowa klasa: https://gist.github.com/mprz/6cce0e6dd51e4796209c
Tworząc kilka klas niejako uzależniam je od klasy odpowiedzialnej za tworzenie połączenia. Czy to na pewno idealne rozwiązanie? Druga sprawa: gdzie inkludować ową klasę DB? W każdej z klas która jej używa, czy w programie, który korzysta z obu klas (tak robię obecnie)? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy od tego, że w tym wątku rozmawiamy o Singletonie w sensie wzorca projektowego, nie zasięgu typu singleton (czy jakkolwiek to nazwać) znanego ze wszelkich DIC-ów czy przytoczonego przez Ciebie kodu. W tych dwóch kontekstach "singleton" oznacza coś zupełnie innego.
Przykład demonstrujący "zasięg typu singleton": Jak widać klasa Config nie jest singletonem sama w sobie. Co do kodu, który podałeś: 1. W metodzie getConfig() tworzysz obiekt-usługę o zasięgu typu "singleton", jednak sam obiekt singletonem nie jest. Takie rozwiązanie jest jak najbardziej poprawne. 2. Zarówno obiekt konfiguracji jak i połączenia z bazą danych powinien zostać utworzony poza obiektem DomainsController i do niego wstrzyknięty. Podstawa pisania poprawnego kodu: IoC. Unikniesz w ten sposób dziwnych problemów typu // Konfiguracja polaczenia, w kazdym z kontrolerow osobno ?. 3. Obiekt typu Domains posiada zwykłą zależność, która powinna być wstrzyknięta. Możesz zrobić to tak jak pokazałeś, tj. ręcznie, możesz też użyć do tego jakiegoś DIC-a. Ten post edytował Crozin 19.08.2013, 12:08:34 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 02:21 |