Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Budowanie strony z modułów
Forum PHP.pl > Forum > Przedszkole
olechafm
Budując aplikację w oparciu czy to o MVC czy MVP skupiamy się na jednej funkcji, którą ma pełnić jedna podstrona serwisu i do niej dostosowujemy kontroler model i widok np. żeby wyświetlić użytkownikowi listę newsów używam elementów odpowiedzialnych za tą czynność (wywołuje odpowiedni kontroler)

strona nie zawiera jednak tylko tego elementu (lista newsów) ale również inne komponenty jak chociażby stopka, czy menu które są stałe dla wszystkich stron (lub zmienne zależnie od podstrony)

W jaki sposób konstruować całą podstronę, jak wypełnić ją pozostałymi elementami, czy to kontroler danej funkcji serwisu ( np. listowania newsów) powinien przechowywać informacje o tym z jakich elementów ma się składać i załączać te elementy strony które powinny śię wyświetlac na danej podstronie?
Crozin
Dodaj sobie jeszcze H (od ang. Hierarchical) do obu tych skrótów, a otrzymasz odpowiedź.
olechafm
jakieś dobre źródło na ten temat może ktoś zna?

w dalszym ciągu będę wdzięczny za jakieś dobre źródło...

czy do wywoływania obiektów które będą kolejne w hierarchii po głównym kontrolerze powinienem koniecznie używać specjalnego obiektu (w tym co widziałem zawsze występowała implementacja wzorca Factory)?
Niktoś
Wzaorzec faktory ,nie jest zbytnio trwały ,ale do tego może akurat się nadać.
Crozin
Cytat
czy do wywoływania obiektów które będą kolejne w hierarchii po głównym kontrolerze powinienem koniecznie używać specjalnego obiektu (w tym co widziałem zawsze występowała implementacja wzorca Factory)?
Możesz wykorzystać dokładnie ten sam mechanizm - o ile ma on ręce i nogi - co do odpalania głównego kontrolera z jakoś tam zmienionym środowiskiem.

Na dobrą sprawę dla typowej aplikacji webowej w szablonie umieszczasz jakąś tam instrukcję wywołującą inne komponenty:
  1. <div id="sidebar">
  2. <h3>Prawa kolumna</h3>
  3.  
  4. <fw:include component="KomponentOstatnichPostówNaFormu" />
  5. <fw:include component="KomponentAktualnieZalogowanychUżytkowników" />
  6. </div>
Co uruchamia odpowiedni kontroler, który zaś może wywoływać kolejne szablony.

Warto jedynie dla tak odpalonych komponentów ustanowić nowy kontekst ich wywołania - tak by były świadome, że zostały wywołane jako komponent (mogą mieć np. referencję do nadrzędnego komponentu).

@Niktoś: Co to znaczy, że wzorzec nie jest zbytnio trwały?
Niktoś
Nie potrzebnie tak pisałem,nie wiem jak by ten wzorzec sprawdzał się przy callbackach i requestach ajaxu.W asp.net używam jeszcze partial postback. I tworzenie takich obiektów np.w prostocie singeltona bywa czasami kłopotliwa ,nie mówiąc już o wzorcu fabryki gdzie mechanizmami obsługi tworzonych obiektów są interfejsy.
Może ,jeszcze za mało się znam.Za bardzo skomplikowane to dla mnie ,jak na razie ,a co sądziłbyś o tym
http://pl.wikipedia.org/wiki/Pula_obiekt%C...c_projektowy%29 -nie wiem czy w PHP jest ten wzorzec dostępny.
Trzeba tylko pilnować stanu obiektów,nie potrzebne są żadne interfejsy.
Crozin
Po pierwsze to spację wstawia się po znaku interpunkcyjnym.

Co mają AJAX-owe żądania tutaj do rzeczy? Jaką to niby prostotę w tworzeniu obiektu wprowadza singleton i co ma wykorzystanie interfejsów do wzorca fabryki?
Co zaś pula obiektów może mieć tu do rzeczy to już kompletnie nie rozumiem i w czym ona niby wyręcza(?) interfejsy.
W ogóle co drugie Twoje zdanie jest tutaj kompletnie oderwane od rzeczywistości.
olechafm
Cytat(Crozin @ 26.12.2011, 21:58:48 ) *
Warto jedynie dla tak odpalonych komponentów ustanowić nowy kontekst ich wywołania - tak by były świadome, że zostały wywołane jako komponent (mogą mieć np. referencję do nadrzędnego komponentu).


sprowadzając to do przykładu, taka informacja pozwoli mi zdecydować np. o tym jaki template użyć (inny dla wywołania jako komponent gdy np. lista newsów będzie boxem na stronie głównej a inny gdy będzie wyświetlana jako główna treść na podstronie newsów), taki ma to cel?
Crozin
Na dobrą sprawę mogłoby to nawet i do takiego celu posłużyć:
  1. if ($request->getParent() == null) { // $request->isRoot()
  2. $template = 'normalny';
  3. } else {
  4. $template = 'komponent';
  5. }
Ale w rzeczywistości raczej będziesz mieć dwie osobne akcje do tych celów, bo będą one realizować raczej nieco inne zdania - komponent raczej będzie bardziej okrojony niż "pełna wersja".

Taka informacja o rodzicu nie musi być wcale jakoś specjalnie potrzebna, ale warto by było ją przekazać, szczególnie, że nic to nie kosztuje. W tej chwili nie przychodzi mi do głowy jakiś książkowy przykład przydatności tego. Pozwoliłoby to jednak na identyfikację kontekstu wywołania, a taka informacja może być użyteczna.
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.