![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Piszę sobie klasę do obsługi bazy danych i przyglądam się tak bardzo popularnemu wzorcowi singleton. Wszyscy jako przykład użyteczności tego wzorca podają przykład tworzenia instancji klasy do obsługi bazy, tzn połączenia z bazą. Zacząłem się zastanawiać gdzie jest sens, oczywiście w języku php. Zakładam, że mam taką klasę i w skrypcie łącze się z bazą danych, jeśli nie ma nawiązanego połączenia to tworzę obiekt tej klasy a jeśli jest to nie tworzę.
Wszystko jasne. Tylko gdzie jest sens stosowania tego w php. Przecież w skrypcie zazwyczaj tworzy się połączenie z bazą, wykonuje potrzebne operacje na bazie a po zakończeniu wywoływania skryptu, połączenie i tak jest zamykane automatycznie.. Więc jaki jest sens stosowania tego w php? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Na razie mój pomysł dotyczy korzystania w aplikacji z jednej bazy.
Przykładowy plik konfiguracyjny: Kod [Db] Type = mysql Host = 127.0.0.1 Port = 3306 User = user Password = pass Base = test2 Interfejs:
Klasa do obsługi Mysql:
Wszystkie metody będę w ten sam sposób wywoływane (te same parametry) aby zachować możliwość zmiany klasy beż konieczności przerabiania kodu aplikacji. Sposób tworzenia obiektu zależeć będzie od sposobu implementacji klasy. Mam klasę Config (wzorowałem się na sposobie hwao - uprościłem ją i zmieniłem), która parsuje plik ini i tworzy klasę z właściwościmi statycznymi, która jest dołączana do aplikacji. Wywołanie będzie się odbywać mniej więcej w taki sposób.
Jeśli napiszę więcej klas do obsługi innych baz przerobi się to na switch'a W ten sposób to widze. Problemem może być tak jak pisałem wyżej, jeśli zechcemy korzystać w jednej aplikacji z kilku różnych baz. Można też zamiast if lub switch dołączać klasę w ten sposób:
ale to już drobnostka.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 07:10 |