![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 1.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Czesc! Od dluzszego czasu zastanawiam sie, jak logicznie zaplanowac szkielet mojego frameworka, w zasadzie mam na mysli przekazywanie obiektow. Caly moj framework jest pisany obiektowo, sklada sie z bootstrapa ktory kolejno wykonuje zaplanowane dzialania na roznych klasach, przeznaczonych do konkretnego celu. Stworzylem klase statyczna ala Singleton w ktorej przechowuje instancje/obiekty klas, dzieki czemu w przypadku potrzeby odwolania sie z jednej klasy do innej, moge szybko zwrocic referencje do obiektu. Jesli pracuje w klasie Router moge uzyskac dostep do klasy MySQL. Podczas powolania klas do zycia, w metodzie magicznej __construct automatycznie rejestruje instancje w statycznym singletonie poprzez sgt::setInstance($this). Jesli mam 3 klasy ktore uzywaja MySQL, kazda z nich posiada wzmianke w __construct, $this->mysql=sgt::getInstance('mysql'); tyczy sie to kazdej klasy z osobna, w wyniku czego w kazdej z klas powstaje duzo zmiennych przechowujacych referencje do obiektow.
Troche duzo z tym zabawy ale prostrzej metody nie widze, nie jestem zbyt doswiadczonym programista... Chcialbym sie dowiedziec czy robie to dobrze, czy tak powinno sie robic, a moze sa inne sposoby - bardziej profesjonalne? Pozdrawiam. |
|
|
![]() ![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Ucz się ucz
![]() Czy nie łatwiej byłoby zacząć od podstawowej klasy Component, która definiowałaby dostęp do bazy dla wszystkich swoich potomków? ![]()
-------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Możesz wykonać klasę statyczną do obsługi SQL ale tu pojawia się warunek :
Za pomocą tej klasy możesz pracować tylko na jednej bazie danych ... ale za to możesz pracować z nią na wielu klasach bez potrzeby przekazywania obiektu w __constuct() -------------------- Nie udzielam pomocy poprzez PW
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Możesz wykonać klasę statyczną do obsługi SQL ale tu pojawia się warunek : Za pomocą tej klasy możesz pracować tylko na jednej bazie danych ... ale za to możesz pracować z nią na wielu klasach bez potrzeby przekazywania obiektu w __constuct() bez sensu, odwoływanie się ciągle do jakieś klasy? a co jeżeli zmienisz nazwę klasy. Będziesz edytował wszystkie dokumenty php i szukał jej nazwy ? ![]() Za pomocą tej klasy możesz pracować tylko na jednej bazie danych jak sobie zaimplementuje to tak będzie miał, kto powiedział, że będzie ograniczony do jednej bazy danych? -------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 1.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Klasa statyczna odpada podobnie jak dziedziczenie, aktualnie moj framework liczy kilkanascie bibliotek...
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ostatecznie pozostaje wzorzec registry.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem czemu nie korzystać z dziedziczenia. Więc po co Ci właściwie framework pisany obiektowo? Dla zasady?
-------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@em1X: nie rozumiesz chyba do czego służy dziedziczenie
Jednym z kilku spisujących się rozwiązań jest Dependency Injection. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 23:14 |