![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
WItam na potrzeby wlasne jestem zmuszony nauczyc sie OOP i Mvc poniewaz chce wejsc na praktyke do firmy znajomego ale powiedzial mi ze zanim pomoze mi sie nauczyc jego Framework'a musze poznac dobrze OOP(co jak narazie dobrze mi nie wychodzilo
![]() Index.php
I tak wyglada Index ![]() Klasa Router -> http://rafb.net/p/uvyyUI12.html Klasa Kontrolera -> http://rafb.net/p/303AWO83.html W komentarzach opisalem o co mi glownie chodzi nie chcialem wklejac tu kodu bo zauwazylem ze nie zawsze jest on czytelny na forum co moze zniechecic pare osob na krotka analize moje skromnego kodu. Ogolnie czy jest to good napisane moze dzialac(w sensie generalnym na wieksza skale) czy jest cos co byscie zmienili/poprawili(napewno jest ![]() I mam jeszcze jedno pytanie czytalem prawie wszystkie watki tu na forum i nie tylko dotyczace MVC wiem jak to dziala to ma robic Kontroler/Widok/Model jednak nie wiem zabardzo jak po wywolaniu odpowiedniej klasy i jej akcji pobrac dane za pomoca modelu wyslac do Widoku "obrobic" i zwrocic, u mnie to bedzie dzialalo troche inacze kontroler modulu bedzie pelnil role Modelu bo glowny kontroler ma wszystko robic i potem jest widok. I mialbym dla was prosbe czy ktos z was moglby zrobic mi przyklad np prostej klasy(Modele) ktory pobierze news i jak mialby wyslac dane(w postaci zmiennych jak narazie bez szablonow) do Widoku zebym tylko zrozumial jak ma to dzialac np:
I jak no teraz widok ma odebrac dane i je np przeparsowac lub wyswietlic? P.S oczywiscie Url powinien wygladac: www.costam.pl/index.php/news,ShowNews -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W OOP istnieje takie pojęcie jak "Separation of concerns" - z grubsza oznacza to, że w projektowanym systemie wydzielasz sobie obszary ze sobą nie związane np. do osobnych obiektów.
I tak w najprostszym MVC takimi obszarami są: 1. Obsługa żądania (request) 2. Obsługa tłumaczenia parametrów żądania do poszczególnych akcji (router). Takim parametrem są np. URL i nagłówki HTTP lub parametry w konsoli 3. Obsługa wyszukiwania akcji w strukturze katalogów systemu (dispatcher). 4. Obsługa akcji i powiązanych widoków (controller). 5. Obsługa widoku (view) 6. Obsługa odpowiedzi (response) 7. Obsługa wszystkich powyższych, sklejająca je w całość (front controller). Pisząc swoje wariacje MVC powinieneś wziąć powyższe pod uwagę. Widzisz więc że twój front controller (BaseController) nie może dziedziczyć po Routerze, bo to co obsługuje router to nie jego działka. Zapamiętaj też nazewnictwo. Pozdrawiam, Alan P.S. Nie zaprzeczam, że kilka rzeczy pominąłem ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 4 Dołączył: 19.05.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
-------------------- The fastest app with PHP: <?php die('Hello World'); ?>
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Czyli podsumuwyjac bo nie bardzo rozumiem co macie na mysli?
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 4 Dołączył: 19.05.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
podsumowujac, to moim zdaniem masz troche nie ten teges:
ale i tak mysle ze powinienes dac jakiegos gettera w klasie Dispatcher -------------------- The fastest app with PHP: <?php die('Hello World'); ?>
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
podsumowujac, to moim zdaniem masz troche nie ten teges:
ale i tak mysle ze powinienes dac jakiegos gettera w klasie Dispatcher Czyli mowisz zeby klasa Dispatcher tez dziedziczyla po Router?? Ale powiec mi w czym moze mi pomoc getter w Routerze bo nie bardzo rozumiem chetnie wyslucham ![]() No i powiedz mi jak ty bys zrobil z tym przypisywaniem? Jakbyś mógł konkretniejsze pytanie zadać. Nom chodzi mi bardziej o konkretniejsze odpowiedzi ![]() Oczywiscie dziekuje za ci @LBO za napisanie wszystkich podpunktow MVC. -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 4 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
O dzizys, jak Router może dziedziczyć po Dispatcherze?
Poczytaj w necie, na forum, przejrzyj źródła symfony i Zenda, a Ci się troche rozjaśni co jest co. Gdzieś widziałem artykuł, gdzie było opisane nazewnictwo podstawowych elementów w frameworkach, ale teraz go nie moge znaleźć. Zresztą, jak przejrzysz archiwum pro to tam są też opisane, chociaż część informacji jest juz przestarzała. ; > |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Cytat O dzizys, jak Router może dziedziczyć po Dispatcherze? Przeczytaj ze zrozumieniem co napisalem, bo napisalem na odwrot. A nazewnictwo nie jest wazne elementy chce nazywac jak mi jest wygodniej w ogolnie moje pytanie bylo inne. -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 4 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Hehe, zastanów się co to za różnica ?
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Moze i nie ma ale z tego co napisal @Orkan to wlasnie o to mu chodzilo.
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
A nazewnictwo nie jest wazne elementy chce nazywac (...) asdfkj sdkl asjdf askjas sdkjfh alsdjfh aksdjhf sgh skaksd a<ironia> Nie zrozumiałeś? Trudno, ja tak sobie po prostu ponazywałem słowa ![]() </ironia> Jeśli zabierasz się za wzorce projektowe to musisz uświadomić sobie po co one powstały. Po to by w jednolity sposób pomóc rozwiązywać różnym ludziom te same problemy w taki sam sposób. Ustalona, jednolita nomenklatura jest częścią wzorców projektowych. I jak mówisz Router to wszyscy myślą Router. |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 4 Dołączył: 15.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ja nie widzę tam nic na temat dziedziczenia.
Zastanów się, czy pralka dziedziczy po krzaku ? |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
No ok ale jesli ktos chce na serio pomoc to chyba czyta i kod ktory jest podany w poscie po ktorym mozna zrozumiec dzialanie klasy Router i ustalenie co ona ma robic i jak powinna sie nazywac ja MVC nie znam ucze sie go wiec nie wiem dokladnie co ma robic router wiec klase tak nazwalem nie trzeba odrazu wyjezdzac z sarkazmem typu: "dzisys"
o co do mojego problemu ktos pomoze? -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
wiec nie wiem dokladnie co ma robic router Nie wiesz? A powinieneś: 2. Obsługa tłumaczenia parametrów żądania do poszczególnych akcji (router). Takim parametrem są np. URL i nagłówki HTTP lub parametry w konsoli Po twoich postach mam wrażenie, że liczysz, że ktoś magicznym pstryknięciem palców przekaże Ci pełną wiedzę dot. wzorców projektowych. Mogę Ci z cała pewnością powiedzieć, że będziesz rozczarowany. Dlatego też poprosiłem o bardziej sprecyzowane pytania, co niestety potraktowałeś bardzo po macoszemu (utwierdzając mnie tylko w tym co piszę teraz). Co do nazewnictwa. Inżynierowie, omawiając jakąkolwiek specyfikację nie używają słowa wihajster miast kondensator. Tak samo jest w programowaniu. |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Cytat WItam na potrzeby wlasne jestem zmuszony nauczyc sie OOP i Mvc poniewaz chce wejsc na praktyke do firmy znajomego ale powiedzial mi ze zanim pomoze mi sie nauczyc jego Framework'a musze poznac dobrze OOP(co jak narazie dobrze mi nie wychodzilo biggrin.gif) i Wzorzec MVC: Jeśli jesteś zmuszony to źle. Naprawdę polecam "PHP5 Obiekty wzorce narzędzia" jako podstawę do wszelkiej nauki OOP. Zrozum kolegów wyżej - mają dość tłumaczenia komuś czegoś, co może dowiedzieć się sam. Sam musisz to zrozumieć, a to przyjdzie po wielu dniach i nieprzespanych nocach. "Zaskoczysz", to zobaczysz. Router, to wspólna nazwa dla klas, które mają wspólny interfejs (czyli metody) i wykonują to samo zadanie, tylko na różne sposoby. Chodzi o adresy URL, które jak wiesz mogą wyglądać różnie. index.php?costam=innecos&kolejnecos=następnecos /newsy/hello_world /hello_world.html /zmienna/wartosc/zmienna2/wartosc2 Co więc robi router? Zamienia adresy URL na konkretne wartości żądania. Takie żądanie składa się z wielu parametrów, ale podstawowe, które występują w praktycznie każdym FW, to moduł i akcja do uruchomienia. Zauważ tylko, że to jest jedyne, co on robi. Nic ponadto. Oczywiście musi jakieś wyniki udostępniać. Te wyniki muszą być rozumiane przez inny obiekt - Dispatcher, który bierze wyniki działania Routera i tłumaczy sobie te parametry na konkretne elementy systemu (pliki, klasy, akcje), po czym uruchamia akcję i przydziela jej zasoby*. Zobacz: http://pl.wikipedia.org/wiki/Dyspozytor http://hillside.net/plop/plop2001/accepted...ernandez0_1.pdf Bez solidnej teorii nie ruszysz, pamiętaj o tym! Pozdrawiam @LBO - ja tak widzę rolę Dispatchera, choć nie wiem, czy nie dokonuję nadinterpretacji. Można wydzielić jeszcze więcej obiektów przecież ![]() -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Myslalem nad kupnem tego: http://helion.pl/ksiazki/probph.htm
Ogolnie czytam i czytam ale widze ze te OOP to czarna magia dla mnie ![]() Jeszcze poczytam mam nadzieje ze tym razem cos z tego wyjdzie. -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 4 Dołączył: 19.05.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Czyli mowisz zeby klasa Dispatcher tez dziedziczyla po Router?? Ale powiec mi w czym moze mi pomoc getter w Routerze bo nie bardzo rozumiem chetnie wyslucham ![]() No i powiedz mi jak ty bys zrobil z tym przypisywaniem? Nom chodzi mi bardziej o konkretniejsze odpowiedzi ![]() Oczywiscie dziekuje za ci @LBO za napisanie wszystkich podpunktow MVC. Sam sie ucze MVC i napewno nie jestem ekspertem. Za to mam inna metode nauki, otoz nie pisze od razu wlasnego modelu, tylko ucze sie od najlepszych (symfony) Na poczatku bylo ciezko, ale po kilku ksiazkach z cwiczeniami zaczynam lapac o co chodzi, i kazdemu polecam taka droge ![]() Co do Twojego kodu (pomijajac wspomniany juz aspekt architektury MVC)
PHP nie kopiuje obiektow tylko tworzy aliasy, wiec nie jest do konca jasne co tu sie tworzy... powinno byc:
gettery zapobiegaja "rozszczelnieniu" klasy, dlatego dobrze jest je stosowac. ja bym to napisal tak:
-------------------- The fastest app with PHP: <?php die('Hello World'); ?>
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@LBO - ja tak widzę rolę Dispatchera, choć nie wiem, czy nie dokonuję nadinterpretacji. Można wydzielić jeszcze więcej obiektów przecież ![]() Nadal mieścisz się w mojej definicji, więc dzisiaj Ci daruję ![]() ![]() Chociaż mam zastrzeżenia do Routera. Mimo, że się rozpisałeś bardzo zawęziłeś. Router (różne implementacje oparte o interfejs - dla kolegów, którzy się jeszcze uczą) powinien być w stanie obsłużyć najróżniejsze środowiska. Dla WWW parametrami powinny być: URL, nagłówki, ciastka, GET i POST. Dla CLI (konsoli) to parametry wywołania i stałe systemowe.... a co tam w dobrze zaprojektowanym systemie nawet z mikrofalówki powinien ruszyć ![]() edit: Nie mogłem się powstrzymać. Oto Dispatcher: ![]() Ten post edytował LBO 21.03.2009, 01:04:59 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 175 Pomógł: 12 Dołączył: 28.06.2007 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Myslalem nad kupnem tego: http://helion.pl/ksiazki/probph.htm Ogolnie czytam i czytam ale widze ze te OOP to czarna magia dla mnie ![]() Czytalem kiedys ta ksiazke, polecam. Chociaz, z tego co pamietam, wzorce i MVC sa dosyc "sucho" wytlumaczone i w dosyc okrojonej formie. Jesli masz problemy z OOP to powinienes skupic sie najpierw na tym, a wzorce w tym MVC same sie przyturlaja. -------------------- Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe. Albert Einstein |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.06.2025 - 14:58 |