Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przekazywanie obiektow
mozejednaknie
post 7.08.2010, 06:48:46
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.
Go to the top of the page
+Quote Post
em1X
post 7.08.2010, 14:00:37
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 smile.gif

Czy nie łatwiej byłoby zacząć od podstawowej klasy Component, która definiowałaby dostęp do bazy dla wszystkich swoich potomków? smile.gif

  1. abstract class Component {
  2. public $_db;
  3.  
  4. // jakies metody odnosnie obslugi bazy
  5. // itp.
  6. }
  7.  
  8. class Router extends Component {
  9. // twoja klasa posiada juz dostep do bazy :)
  10. }


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
gothye
post 7.08.2010, 14:09:14
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
Go to the top of the page
+Quote Post
em1X
post 7.08.2010, 14:18:03
Post #4





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Cytat(gothye @ 7.08.2010, 15:09:14 ) *
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 ? smile.gif

Cytat(gothye @ 7.08.2010, 15:09:14 ) *
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
Go to the top of the page
+Quote Post
mozejednaknie
post 7.08.2010, 19:17:59
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...
Go to the top of the page
+Quote Post
erix
post 7.08.2010, 19:23:14
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!
Go to the top of the page
+Quote Post
em1X
post 7.08.2010, 19:38:20
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
Go to the top of the page
+Quote Post
Crozin
post 7.08.2010, 22:55:19
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.
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: 7.07.2025 - 23:14