Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekazywanie obiektow
Forum PHP.pl > Forum > PHP
mozejednaknie
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.
em1X
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. }
gothye
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()
em1X
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?
mozejednaknie
Klasa statyczna odpada podobnie jak dziedziczenie, aktualnie moj framework liczy kilkanascie bibliotek...
erix
Ostatecznie pozostaje wzorzec registry.
em1X
Nie rozumiem czemu nie korzystać z dziedziczenia. Więc po co Ci właściwie framework pisany obiektowo? Dla zasady?
Crozin
@em1X: nie rozumiesz chyba do czego służy dziedziczenie

Jednym z kilku spisujących się rozwiązań jest Dependency Injection.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.