Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wprowadzenie do MVC [hawk]
Forum PHP.pl > Wortal > Artykuły
Seth
Uwagi, pytania zwiazane zwiazane z artykulem hawka "Wprowadzenie do MVC" prosze pisać w tym temacie.
Holyboy
Mniam mniam - ten artykul i polska dokumentacja Phiend'a biggrin.gifD

Jednakze jest pewien powazny problem - wydrukowac nadal to sie latwo nie da - niestety, panowie ta ikonka drukuj jest nic nie warta w sumie...

Tak wiec moja propozycja roszerzenia funkcjonalnosci - trzeba dodac cos w stylu "Drukuj zawartosc dzialu" - najlepiej jak bedzie wysylalo plik PDF

Moja drukarka juz piszczy na wiesc o drukowaniu Manuala Phiend'a biggrin.gifD
Jak bedzie piszczec za czesto i za glosno to recznie to zloze i wrzuce do PDFa
itsme
dzis bede w domq pracowal nad pdf wiec poglaszcz swoja drukareczke niech poczeka i dostanie to na co czeka ... .
scanner
PDF: http://forum.php.pl/viewtopic.php?t=13877
Indeo
A gdzie mozna poczytac coś więcej o problematyce MVC?
Jakieś szersze informacje, przykłady? Gdzie wogóle można poczytać o organizacji kodów php itd.

Pozdrawiam
Nalfein][WR
Tutaj: http://mvc.ag.bocznica.org/ winksmiley.jpg

Ciekawe rzeczy piszą też na http://www.phppatterns.com .
Indeo
Any polish literature?
hawk
Niestety, w naszym pięknym ojczystym języku literatura fachowa jest skąpa. Cóż, taka profesja...

Do linków dorzucę jeszcze http://msdn.microsoft.com/practices/type/P...erprise/DesMVC/.
Indeo
Cóż a może wogóle przydałaby się jakaś wykładnia nie koniecznie z kręgu filozofii światowej ale poparta własnymi doświadczeniami w zakresie budowania aplikacji php. Od dłuższego czasu buduję takie aplikacje ale jest w nich bałagan, czasami prowadzi to do tego że kilka razy pobieram z bazy te same zmienne, a czasami wręcz dochodzi do kolizjii nazw zmiennych. Pogubiłem się w tym wszystkim. Czasami aż strach pomysleć co ten program właściwie robi (od ponad roku parsuje i wrzuca do MYSQL'wej bazy dane pochodzące z baz PROGRESA (nie mylić z postgresem!)) na ich podstawie generuje pisma, umowy itd.

Kiedy patrzę np. na taki MAMBO_SERVER, jak tam wszystko jest ładnie poukładane, prawie kazdy skrypt składa się z instrukcji typu $obiekt_X->zrób_to(), obiekt_Y->zrób_tamto(). Nie to co u mnie.

Chciałbym aby ktos podzielił sie ze mną jakąś swoją sprawdzona filozofia wtej dziedzinie. Nie chodzi o jakies górnolotne wywody ale po prostu o to które zmienne zawsze trzymac wsesjach a których nie, jak rozegrać same pliki skryptów, ile i jakie klasy tworzyć etc.

Pozdrawiam
hawk
To nie jest chyba coś co można wytłumaczyć w ramach jednego postu :? . To jest raczej coś czego człowiek/programista uczy się całe życie.

Moja rada: trzeba "czuć" obiektowość. Polecam serial Nalfeina i http://www.phppatterns.com/. Wzorce, wzorce...

Chyba jednak wyszły z tego górnolotne wywody :? i nie podam ci jakiegoś wspaniałego rozwiązania dot. np liczby klas. Odpowiedź brzmi: "to zależy i tylko ty możesz to ocenić". Gdyby było inaczej to zrobiliby jakiegoś mega-super-programującego-robota i nie byłoby dla nas pracy laugh.gif .
cagrET
Polecam artykuł na temat wzorców projektowych:
http://phppatterns.com/index.php/article/a...leview/103/1/1/
ROX ~! :D
halfik
no i w tym phparchitekcie co jest z maja 2003 w pdfie za free tez jest art wprowadzajacy snitch.gif
matid
Przydało by się dodać do tego artykułu jakieś przykłady zastosowania, jakiś kod, bo przyznam szczerze że z przerzuceniem się na OOP było u mnie bez problemu tak z MVC męczę się od jakiegoś czasu i po prostu załapać tego nie umiem.
Jojo
W artykule nie wyświetlają się rysunki. Sądzę, że przydałyby się do lepszego zobrazowania przedstawionych tam treści. Czy ktoś mógłby poprawić ścieżki do obrazków tak aby pokazywały się poprawnie?

PS. Pod obrazkami przydałby się też alt na wypadek jakby znowu przestały działać smile.gif
jupeter
A ja mam cholerne problemy z tym MVC. Próbowałem przetestować gotowe skrypty phpMVC (bez jakichkolwiek zmian).

Mam zainstalowanego Apacha 2 + php 5 pod Windowsikiem.
Zmieniałem już konfigurację php.ini w najrozmaitrzy sposób i wciąż wywala mi jakieś błędy.

Ostatnio wywala mi błąd, że nie może znaleść includa, mimo że ma zdefiniowane w main.php include_path (jakby nie widział w ogóle ustawienia tego).

A nie zagłębiając się za bardzo ... czy ktoś postawił u siebie phpMVC i czy mógłby powiedzieć, jak to uczyniłquestionmark.gif
webdeveloper
Witajcie

Na wstepnie chcialem pochwalic za super serwis, wiele ciekawych informacji, a forum to juz w ogole wymiata - iloscia postow jak i poziomem dyskusji. Dzieki, ze jestescie.

A teraz ad rem... tlumaczenie mana do phienda jest ok, ale trudno sie je czyta (co juz wiadomo), nawet powstal pdf, ale jest maly problem - nigdzie nie moge go znalezc, link, ktory podano na stronie - nie dziala (404)... any ideas?
matid
Tylko czy to naprawdę jest prawdziwy model MVC? Bo z tego co ostatnio się dowiedziałem (od osób studiujących informatykę i z różnych artykułów) to autor chyba pomylił pojęcia Sterownik / Kontroler. W modelu MVC mamy Kontroler i jest on odpowiedzialny za modyfikowanie modelu, a w przypadku gdy mamy akcję nie wymagającą modyfikowania danych Kontroler w ogóle nie uczestniczy w działaniu aplikacji.
A w artykule na php Kontroler jest odpowiedzialny za zbieranie żądań od użytkownika i przekazywanie ich albo Widokowi albo modyfikowanie Modelu.
Czy to aby na pewno jest MVC?

Jeśli się mylę, to proszę mnie poprawić, ale nie na darmo słuchałem 3 godzinnego wykładu o MVC od mojego znajomego informatyka smile.gif
webdeveloper
Nie wnikam czy kontroler powinien wykonywac jakies akcje czy nie... z pewnoscia bede pisal, tak aby mi bylo wygodniej (no i zeby mialo to rece i nogi) i oczywiscie zeby w przyszlosci mozna bylo wielokrotnie wykorzystywac raz napisane modele/wzorce... czas pokaze.

btw dla mnie informatyk to "pan kazio instalujacy drukarki w urzedzie miejskim"... w dzisiejszych czasach pisac o kims informatyk, to IMHO obraza winksmiley.jpg, sklanialbym sie tu do wydzielenia w jakiej galezi ow informatyk sie porusza...

Czy wiadomo juz skad mozna zassac pdfa?
hawk
@matid:
Dla mnie to co powiedział znajomy informatyk jest bez sensu.

Co to znaczy "odpowiedzialny za modyfikowanie Modelu"? Pomijając samo MVC, sama idea czegoś takiego jest... dziwna. Jeżeli jakaś moja akcja chce zmienić coś w modelu, prosi Kontroler, żeby poprosił obiekt Modelu, żeby coś tam zmienił? To by była Fasada na Model.

Cytat
w przypadku gdy mamy akcję nie wymagającą modyfikowania danych Kontroler w ogóle nie uczestniczy w działaniu aplikacji

To ja się zastanawiam, jak taka akcja ma się uruchamiać, jeżeli nie ma w tym momencie żadnego kontrolera. Sama z siebie się zainicjuje i uruchomi? Chyba że mówimy teraz o nie związanych ze sobą skryptach rozrzuconych po katalogach - wtedy Apache robi za kontroler.

Zresztą, webdeveloper dobrze mówi. Nieważna jest teoria, ważna jest praktyka. Największym problemem MVC jest to, że ludzie zastanawiają się, co jest słuszne i zgodne z teorią, zamiast zastanawiać się, co dobrze działa.

@webdeveloper:
Potrzebny ci jest PDF z przetłumaczonym manualem, czy PDF z oryginalnym manualem? To pierwsze generuje chyba ez i skutek jaki jest każdy widzi. To drugie gdzieś pewnie mam.
webdeveloper
Cytat
@webdeveloper:
Potrzebny ci jest PDF z przetłumaczonym manualem, czy PDF z oryginalnym manualem? To pierwsze generuje chyba ez i skutek jaki jest każdy widzi. To drugie gdzieś pewnie mam.


Hawk, potrzebuje przetlumaczonego mana z Waszej strony, mana angielskiego zassalem z sourceforga.

Jesli chodzi o pdf generowanego przez ez... albo czegos nie kumam, albo ze mnie jest lamer... nie widze nigdzie bym mogl sciagnac pdf z tlumaczeniem (calym!) mana...
hawk
Moja wina, moja wielka skrzynka wina...

Przetłumaczonego manuala w pdf nie można ściągnąć, bo nie ma linka w ez. Pewnie nie został wygenerowany. Link który dawał scanner wyżej w tym wątku też nie działa. Więc stan jest taki że tego pdf nie ma. Ja nie mam u siebie przetłumaczonych źródeł więc nie mogę sam wygenerować.

Pozostaje ci tylko wersja angielska.

PS Przetłumaczony manual w ez w wersji HTML też jest śmieszny: wstęp znalazł się na końcu blink.gif
matid
Cytat(hawk @ 2004-11-02 10:15:44)
To ja się zastanawiam, jak taka akcja ma się uruchamiać, jeżeli nie ma w tym momencie żadnego kontrolera. Sama z siebie się zainicjuje i uruchomi? Chyba że mówimy teraz o nie związanych ze sobą skryptach rozrzuconych po katalogach - wtedy Apache robi za kontroler.

Nie mówię tutaj tylko o zastosowaniu MVC w php tylko ogólnie w programowaniu.

Uruchamianiem akcji zajmuje się Sterownik (z angielskiego chyba dispatcher) a nie Kontroler. To są dwa zupełnie różne pojęcia i Sterownik nie ma nic wspólnego z MVC.
hawk
Rotfl.

Właśnie napisałeś że uruchamianie akcji nie ma nic wspólnego z MVC.

Możesz napisać trochę więcej o różnicach między sterownikiem a kontrolerem?
matid
Kontroler ma za zadanie modyfikować model. Jeśli prosimy o coś kontroler, to dlatego, że coś się odwołuje do modelu w sposób wymagający nad nim kontroli.

Sterownik ma za zadnie wywoływać odpowiednie akcje na podstawie danych otrzymanych od użytkownika.

MVC nie przewiduje takiego czegoś jak Sterownik, tzn. nie jest to intergralną częścią MVC. Tak samo jak nie jest nią uruchamianie akcji.

MVC można często uprościć do tylko 2 warstw, mianowicie następuje do połączenia Modelu z Kontrolerem i w tedy aplikacja, która chce zmodyfikować model odwołuje się bezpośrednio do niego.
hawk
Cytat(matid @ 2004-11-04 21:49:43)
Kontroler ma za zadanie modyfikować model. Jeśli prosimy o coś kontroler, to dlatego, że coś się odwołuje do modelu w sposób wymagający nad nim kontroli.

Bzdura. Jak można "kontrolować" model? Kontrolować to można przepływem sterowania itd. Pomijając nieścisłości językowe, możesz napisać, w jaki sposób kontroler modyfikuje model? Zaczyna mnie to interesować winksmiley.jpg.

BTW, "odwoływanie się do modelu w sposób wymagający nad nim kontroli" biggrin.gif
Leezard
witam

zaczynam sie zapoznawac z frameworkiem Mojavi 2.0 ,w zwiazku z tym mam pytanie: jesli mam funkcjonalnosc edytowania danych uzytkownika, to jak to powinno byc zgodnie z MVC rozwiazane. Ja to widze tak i prosze o korekte myslenia biggrin.gif

1. podczas pokazywania wypelnionego formularza zmiany w akcji nie robie nic poza wywolaniem odpowiedniego widoku, w ktorym tworze instancje modelu, pobieram za jego pomoca dane z bazy i wyswietlam
2. po wyslaniu danych przez POST wywoluje w akcji metode execute() ktora zapisuje dane w bazie, i dopiero prechodze do odpowiedniego widoku, tworze instancje modelu, pobieram dane i wysiwetlam

Czy pobranie danych z bazy nie jest elementem Logiki Biznesowej? Bo w koncu operuje to w jakis sposob na bazie danych. Czy poprawne jest pobieranie danych w widoku, czy powinny one zostac pobrane w akcji i poprzez obiekt request dopiero przekazane do widoku, ktory pobierze je z requesta i wyswietli?

z gory dizeki z a odpowiedz
pozdrawiam
dag
Pobierasz czy zapisujesz dane powinienes to robic poprzez MODEL. To on komunikuje sie z danymi (baza danych, itp.).

np.
widok -> model -> db
akcja -> model -> db
Leezard
to wiem,
czyli w momencie jesli zadanie uzytkownika nie musi wprowadzac zmian w bazie danych, wtedy nie potrzebuje robic nic w akcji oprocz zwrocenia odpowiedniego widoku, a w widoku dopiero wyciagac dane z bazy i wyswietlac? a w momencie jesli musze zrobic jakas operacje na bazie to robie to w akcji (przy pomocy modelu), a w widoku znowu pobieram dane po aktualizacji i wyswietlam?
ebe
Cytat
a w widoku dopiero wyciagac dane z bazy i wyswietlac


Nie, widok też operuje na modelu. widok -> model -> baza

Pytanie: Czy widok należy utożsamiać z systemem szablonów, czy jest to coś więcej?
bela
@ebe widok to coś więcej, widok jest sposobem prezentacji, może to być xhtml, wap, pdf, co tam chcesz.
ebe
W takim razie jak połączyć widok z systemem szablonów?
Widok posiada w sobie model, do tego np. podtytuł podstrony i nazwę pliku szablonu dla tego modelu (bo przecież nazwy pliku szablonu nie trzymamy w modelu) i n innych rzeczy. Czy kontroler ma wrzucać do obiektu widoku instancję szablonu lub widok ma tworzyć własną instancję przez singleton i w widoku ma się odbywać assignowanie do szablonu. Czy też jakoś inaczej? Mowa o przypadku (x)html bo np dla pdf'a widok utworzy klasę odpowiedzialną za generowanie pdf, a nie szablon.
markac
Cytat
Error: Cannot write to output dirs in ActionController.class.php on line 129
http://phiend.sourceforge.net/application/

Pfff winksmiley.jpg
.rh-
Cytat(ebe @ 13.03.2005, 16:28 ) *
Nie, widok też operuje na modelu. widok -> model -> baza


W jakim sensie operuje? Przeciez Widok nie moze zmieniac modyfikowac modelu...
TomASS
Chętnie poczytałbym ten artykuł, ale niestety link nie działa :/
Link do pdf także nie działa http://forum.php.pl/viewtopic.php?t=13877 .
nospor
@TomASS a wystarczylo tylko na wortalu wpisac tytul do wyszukiwarki i co bys znalazl?
http://wortal.php.pl/phppl/wortal/artykuly...wadzenie_do_mvc
smile.gif

zaraz poprawie tez w pierwszym poscie
TomASS
Oczywiście dałem ja sobie radę - napisałem to w imieniu kogoś kto by nie mógł znaleźc.

Co nie zmienia faktu, że link do PDF'a nie działa.

Dobrze nospor, że czuwasz tongue.gif
nospor
oj z tym pdf to tez mogles sam poradzic... tongue.gif
masz tam id topicu i to najwazniejsze. teraz tylko pobierasz aktualny url do topicow, wstawiasz to id co masz i juz
http://forum.php.pl/index.php?showtopic=13877
domis86
Co do MVC to bardzo polecam książeczke o tytule :
"PHP architects guide to PHP design patterns: a practical approach to design patterns for PHP 4 and PHP 5 developer"

(znajdują sie tam tez opisy wielu innych wzorców)


zamiescilbym tu linka na rapida z tą ksiazeczką, ale jescze mi konto miłe biggrin.gif

ps->szukajcie "php design" na blueportal.org (w dziale search a nie w tym googlowym) aarambo.gif
Exodus
Artykuł cudo. nic tylko czytac smile.gif
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-2019 Invision Power Services, Inc.