![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam kilka klas które komunikują się z różnymi typami baz danych. Wszystkie klasy tworzone są na zasadzie singletonów. Chciałbym napisać klasę nadrzędną DB która odpowiadała by za selekcję i użycie odpowiedniej klasy. Przekazywałbym do konstruktora nazwę, powiedzmy MySQL wtedy klasa zwracała by obiekt klasy MySQL jak to rozwiązać ? Chodzi tutaj o zapobiegnięciu edytowania wielu plików w razie rozrośnięcia się strony i zmiany bazy lub testów wydajnościowych na różnych bazach danych. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 0 Dołączył: 27.03.2007 Skąd: Osiek almost City ;-D Ostrzeżenie: (0%) ![]() ![]() |
Popatrz na przykłady ReflectionAPI w manualu (piękne to, w sam raz do frameworka)
![]() http://pl2.php.net/manual/pl/language.oop5.reflection.php Konkretnie ReflectionClass i ReflectionObject chyba będą potrzebne ![]() Ten post edytował pbnan 5.04.2007, 17:44:58 -------------------- "Hmmm, na wakacje trzeba będzie zacząć zarabiać, co nie? ;-] GTA IV się coraz bardziej zbliża... ;-]"
To się nazywa częsty update sygnaturki. ;-) |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Hmm jakoś sobie nie mogę wyobrazić jak tego użyć rozwiązując ten problem.
reverse-engineering w tym przypadku chyba niespecjalnie się przyda. Mógłbyś podać jakiś przykład ? edit> Coś mi się wydaje że jeśli zostanie tutaj użyte ReflectionAPI zaowocuje to znacznym spadkiem wydajności. Wiesz ta dziedzina w PHP jest dosyć młoda i wolałbym nie eksperymentować z nią. edit>> Zwłaszcza że przy tworzeniu każdego obiektu DB będzie używane reflection. Ten post edytował orglee 5.04.2007, 18:08:47 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 0 Dołączył: 27.03.2007 Skąd: Osiek almost City ;-D Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie popatrz, popróbuj, może zrezygnuj z singletonu (byłoby łatwiej)? >>edit: zaraz Ci przytoczę kawałek o wydajności Reflection w PHP z PHPSolutions ![]() >>>>A cholera, nie chce mi się szukać. Tak na szybko: spadek wydajności będzie niewielki, wiele frameworków korzysta z Reflection i nie jest to strasznie wolne. Cytat Zwłaszcza że przy tworzeniu każdego obiektu DB będzie używane reflection. To twórz tych obiektów jak najmniej ![]() ![]() Ten post edytował pbnan 5.04.2007, 18:14:17 -------------------- "Hmmm, na wakacje trzeba będzie zacząć zarabiać, co nie? ;-] GTA IV się coraz bardziej zbliża... ;-]"
To się nazywa częsty update sygnaturki. ;-) |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Zaraz chcesz mi powiedzieć że używając ReflectionAPI mogę uzyskać ten sam efekt co w przypadku singletonów ? Jeśli tak to masz może jakieś linki które prowadzą do dokumentacji gdzie jest opisane takie wykorzystanie Reflection ?
edit> A no widzisz spadek wydajności jest nawet niewielki. Może trochę przeginam z tą wydajnością ale przy 'sporym' serwisie spadek wydajności w jednym punkcie, może być katastrofalny w skutkach. Zresztą co ja ci tutaj będę truł przecież piszesz framework ^^ Mógłbyś mi podać jakieś rozwiązanie niewykorzystujące ReflectionAPI ? plijz Ten post edytował orglee 5.04.2007, 18:20:28 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 0 Dołączył: 27.03.2007 Skąd: Osiek almost City ;-D Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zaraz chcesz mi powiedzieć że używając ReflectionAPI mogę uzyskać ten sam efekt co w przypadku singletonów ? Jeśli tak to masz może jakieś linki które prowadzą do dokumentacji gdzie jest opisane takie wykorzystanie Reflection ? Nie, nie chcę Ci tego powiedzieć. Możliwe, że tak się da, ale nie sądzę. Po prostu nie widzę jakiejś konkretnej przyczyny na stosowanie singletonów. Cytat Zresztą co ja ci tutaj będę truł przecież piszesz framework ^^ Nie ironizuj ![]() Cytat Mógłbyś mi podać jakieś rozwiązanie niewykorzystujące ReflectionAPI ? plijz Naprawdę, jedyne, co mi na myśl przychodzi, to Reflection w takim przypadku... -------------------- "Hmmm, na wakacje trzeba będzie zacząć zarabiać, co nie? ;-] GTA IV się coraz bardziej zbliża... ;-]"
To się nazywa częsty update sygnaturki. ;-) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przekazywałbym do konstruktora nazwę, powiedzmy MySQL wtedy klasa zwracała by obiekt klasy MySQL jak to rozwiązać ? Chodzi tutaj o zapobiegnięciu edytowania wielu plików w razie rozrośnięcia się strony i zmiany bazy lub testów wydajnościowych na różnych bazach danych. Jeśli ci o to chodzi to możesz a) stworzyć sobię metodę i wbić do niej na sztywno klasę obsługi konkretnego dialektu/rodzaju bazy danych
b ) stworzyć klasę, która pośredniczyłaby w przekazywaniu połączenia do bazy
Gdzie IDbConnection to interfejs klasy obsługującej połączenie do DB. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 08:40 |