![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio wziąłem się za budowę własnego CMS'a opartego na MVC i sterowanego zdarzeniami.
Jednak o ile Model i Kontroler ( ten drugi w moim rozwiązaniu szczątkowy) nie sprawiły mi kłopotów to rozplanowanie systemu szablonów już tak. Czy lepiej jest tworzyć ogrmoną ilość szablonów (oddzielnych dla PDF'a, XHTML, XML'a, oDT, TEXT itd.) czy lepiej stworzyć jakiś system, który wprowadzał by dodatkową warstwę, której zadaniem byłoby przechowywanie uporządkowanych danych w czymś a'la XML. Natomiast View miałby za zadanie IMPORT/EXPORT do niej. Nie chodzi mi o to co będzie szybsze (w sensie czasu działania) tylko łatwiejsze do zrealizowania przez osoby tworzące content dla serwisu, nie znające php. Jednocześnie system ma być łatwy do rozszerzania. W pierwszym przypdaku ilość szablonów w najgorszym przypadku równa będzie ilość formatół * ilość akcji*ilość skinów. W drugim szczerze mówiąc nie wiem do końca jak zbudować VIEW. Czy lepiej może jeszcze inaczej rozwiązać?? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Jak dla mnie model to plik konfiguracyjny danego modułu, który przechowywany jest jako xml/ini/php/db (Jak kto woli).
Ja sam w swoich projektach nie używałem modelu, ponieważ nie był mi potrzebny, ale jeśli będzie potrzebny, to napewno wybiore xml. A swoją drogą, uruchomienie odpowiedniej akcji wygląda u mnie tak (w skrócie). Kod FilterChain->(URLFilter)->(ActionChain)-> HttpRequest-> ExecutionFilter->URLFilter->ActionChain-> PageFilter->Action->OPT. pozdrawiam |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
jak dla mnie widok to 2 czesci.
jedna to dane
druga czesc to funkcja ktora przetwarza $this->data na format jaki ty chcesz. Wiec na moje oko najlatwiej wykonac to w ten sposob:
a potem
a uzycie w kodzie:
nie wiem czy do konca temat zrozumialem, ale ja to tak widze. |
|
|
![]()
Post
#4
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
@AP, @Ociu: jakoś nie przekonują mnie wasze rozwiązania ;]
@Ociu, chyba nie rozumiesz co to jest model. Już spieszę z wyjaśnienie. Otóż model to inaczej dane, a ściślej rzecz biorąc to zestaw klas, funkcji do pobierania danych z źródła np. bazy danych bądź plików tekstowych. A ten schemat też mi się jakoś nie podoba. Czemu jest URLFilter? Przecież URL trzeba sparsować aby dowiedzieć się jakie akcje się pod nim kryją. U mnie to jest pluginem. Poza tym mam problem z rozszyfrowaniem reszty schematu ![]() @UDAT, z tego wynika że najlepszą metodą będzie dla Ciebie XML i przetwarzanie przez XSLT, bo większość formatów o których wspomniałeś to aplikacje XMLa, a z PDF albo plain textem, możemy poradzić sobie za pomocą XSL-FO. Coś jak Cocoon, albo klon dla php a nazwie Popoon. A co do ilości szablonów w pierwszej Twojej propozycji to wynosi ona tylko liczba szablonów * liczba formatów. Gdyż skiny można zastąpić poprzez CSS. -------------------- |
|
|
![]()
Post
#5
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
@Ociu:
Twoj pomysl moze i dobry, ale imho dlamnie zupelnie mijajacy sie z celem (modul jako "modul" jest, ale opornie sie go wlacza). @AC: To poco pokazalest to imho system szablonow a nie View (wiedok) z MVC. Propozycja Beli wydaje sie najlepsza ale niesie ze soba kolejne nie dogodnosci mianowicnie nie wystarszczy znajomosc html/xml/css zeby to wszytko ladnie zlozyc. Moja propozycja: Przeciez calej strony nie bedziesz wyrzucal jako PDF, bo poco? w PDF'ie mozna wyrzucac dokumentacje/faktury itp... wiec czy nie latwiej jest poprostu dopisac do nich osobny paser? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Cytat(bela_666 @ 2006-01-02 17:01:21) @Ociu, chyba nie rozumiesz co to jest model. Już spieszę z wyjaśnienie. Otóż model to inaczej dane, a ściślej rzecz biorąc to zestaw klas, funkcji do pobierania danych z źródła np. bazy danych bądź plików tekstowych. A ten schemat też mi się jakoś nie podoba. Czemu jest URLFilter? Przecież URL trzeba sparsować aby dowiedzieć się jakie akcje się pod nim kryją. U mnie to jest pluginem. Poza tym mam problem z rozszyfrowaniem reszty schematu ![]() Troche źle się wyraziłem. Conf + parser. O to mi bardziej chodziło. A co do reszty. Tyle interpretacji ile ludzi, kazdy ma swój punkt widzenia. A co do URL. URLFilter czyli tłumaczenie adresów. Umysliłem sobie, ze dla mnie filtrem będzie wszystko co co jest potrzebne, słada się tylko z jednej funkcji (metody) i jest bardzo potrzebne ( myk jest taki, że musisz sam zrozumieć ). URLFilter spełnia te wymagania. Wszystkie informacje przerzucam do Context'u, ponieważ te dane są mi zawsze potrzebne. Translator wygląda mniej więcej tak:
Edit: ActivePlayer Myśle, że tutaj sposób ukazany w prado będzie ok. Ten post edytował Ociu 2.01.2006, 16:45:39 |
|
|
![]()
Post
#7
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wiem o co Ci chodzi. Jednak idea filtra jest inna. Filtr możemy sobie wrzucić, wyrzucić, zmienić, zrobić z nim co chcemy, filtr nie jest elementem od którego zależy cała aplikacja. Takim czymś jest plugin
![]() -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Jak kto woli. Mi się tam dobrze pracuje z tym co mam
![]() PS. Wszsycy mnie tylko krytykują i popychają. "A ja się ogolić nie dam! bo ten zarost nosze od przed wojny" ![]() pozdrawiam |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 150 Pomógł: 1 Dołączył: 23.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
mały OT ale forum bez OTów to jak żołnierz bez karabinu ;P
@Ociu do czego służy Ci HttpContext? Czy za pomocą niego porozumiewają się różne obiekty w Twoim programie, używają do do wymiany informacji? -------------------- Słyszałem, że macie tutaj jakieś takie php... fajne to, dobre to jest?
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
@UDAT - naprawde myslisz ze dla kazdej akcji mozna miec output w PDF-ie - wskazana przez Ciebie liczba templatek jest mocno przesadzona. Formularz logowania tez bedzie mozna w PDF ?
![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(NuLL @ 2006-01-02 19:00:47) @UDAT - naprawde myslisz ze dla kazdej akcji mozna miec output w PDF-ie - wskazana przez Ciebie liczba templatek jest mocno przesadzona. Formularz logowania tez bedzie mozna w PDF ? ![]() No niby można ![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Cytat(ebe @ 2006-01-02 21:00:21) mały OT ale forum bez OTów to jak żołnierz bez karabinu ;P @Ociu do czego służy Ci HttpContext? Czy za pomocą niego porozumiewają się różne obiekty w Twoim programie, używają do do wymiany informacji? HttpContext służy mi jako nośnik obiektów Request i Reponse. Bela: A co do schematu, zacząłem go tłumaczyć, ale musiałem, iść na korki ![]() Kod FilterChain->(URLFilter)->(ActionChain)-> HttpRequest-> ExecutionFilter->URLFilter->ActionChain-> PageFilter->Action->OPT. (Swoją drogą, ale go napisałem... tak naprawde nic nie tłumacy co się dzieje ![]() |
|
|
![]()
Post
#13
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mankament z XSL FO jest taki, że z tego co mi wiadomo nie ma procesora zdolnego do współpracy z php, który jest go w stanie obsłużyć, chyba że ktoś ma możliwość używania javy z poziomu php i odpowiednio skonfigurowany serwer. Moja propozycja...
-------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Myślę, że znowu zaczyna się temat tpl Vs. php. No ale...
IMHO 'view' powinien być jeden. Tyle na ten temat ![]()
I to jes takie nie oddzielanie od siebie warstw tworzącej od wynikowej (Cntroller i View). Po to wymyślowo MVC, aby je od siebie oddzielać. pozdrawiam |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tutaj wcale nie zaczyna się temat php vs TPL. On tutaj się kończy. Cały proces tworzenia outputu odwala procesor XSL. Nie ma tutaj miejsca na nic innego. W pamięci przechowywany jest obiekt DOMDocument ze zmiennymi (zmienna $d).
Wszystko pozostaje w jednym języku, bez dodatkowych klas (PDFView, SmartyView, PHPView) etc. zmieniają się tylko szablony XSL. -------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Ee, u mnie to jest dosc prosto zrobione. To wywolywania akcja tworzy obiekt response, a nie framework ( czy tam kontrolera, zwal jak zwal), response nie jest czescia frameworka, a czescia wywolanej akcji, dzieki temu to czy to bedzie smarty, xml czy cokolwiek ... moja aplikacja nie ma z tym problemu, trzeba tylko napisac odpowiedni Response i z niego korzystac.
Ten post edytował sf 2.01.2006, 22:10:15 -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Ociu @ 2006-01-02 20:28:45) IMHO 'view' powinien być jeden. Tyle na ten temat ![]() ------------------------------------------------------------ W prado jest tak, że dla każdego modułu tworzymy nowy plik template, w którym wykonywana jest cała klasa. ------------------------------------------------------------ I to jes takie nie oddzielanie od siebie warstw tworzącej od wynikowej (Cntroller i View). Po to wymyślowo MVC, aby je od siebie oddzielać. Ten środkowy kawałek trochę mi nie pasuję. Preferowałbym rozwiązanie pozwalające na pełną hermetyzację Widoku (tj. można zmienić Widok, ale także Model czy Moduł bez zmiany reszty) Jednak nawet transformacja XML:XSLT nie rozwiązuje tego problemu ![]() |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Wiesz, każdy robi jak lubi.
Ja wole używac uniwersalnego viewu dla każdego moduły, czy to news, artykuł, post. pozdrawiam |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Ociu @ 2006-01-03 18:23:46) Wiesz, każdy robi jak lubi. Ja wole używac uniwersalnego viewu dla każdego moduły, czy to news, artykuł, post. pozdrawiam O to mi chodzi. Jak takie coś skonstruować ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:14 |