![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
napisałem coś przykładowego w MVC, powiem że jest super (xtrim.info) ale bardzo wolno działa. Dlatego napisze to od nowa i pożądnie. I mam problem. Do czego słuzy router. Myśle że do pobrania zmiennych z adresu i post? I np wywowłam $rt->getPost('nazwa_posta', 'int etc.'); O to chodzi? Moglibyście mi dokładnie wytłumaczyć co i jak?
I jeszcze co ma być bazą danych? Robic osobną klasę tak aby jeżeli zmienie baze to tylko jeden wpis zmieniam? Czy korzystać z PDO? Jestem początkujący w PRO ale postaram się wszystko zrozumieć. -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
1. "klasy" nie "clasy"
2. zeby pisac na php pro trzeba umiec googla wykorzystywac http://www.google.com/search?client=opera&...-8&oe=utf-8 Przenosze -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Sorka dr_bonzo tylko ze po przeczytaniu paru artów ja nadal nie wiem jak zbudować router? Jak to ma wyglądać? $rt->getPost czy $rt->get('nazwa', 'post lub get', 'safe_mode true lub false'); Prosze o wytłumaczenie jakieś. I jak zrobić z themem aby móc w akcji czy modelu dodać coś do <head>. Narazie robiłem tak:
$tpl->setTpl('indeg_up.tpl'); $ctrl->setAction('index'); $tpl->setTpl('indeg_down.tpl'); Jest inny sposób? Pewnie odeślecie mnie do gogle tklyo że ja bardzo bym prosił o wytłumaczenie co i jak. ![]() -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Ja po przegryzieniu Rapide'a Prph i po powierzchownym przejsciu przez Zenda zdecydowalem sie na rozwiazanie jak we wspomnianych frameworkach.
Router to klasa ktora pobiera parametry z adresu i tworzy token dla dispatchera. Token ten zawiera w sobie nazwe kontrolera akcji i parametry. Dalej jest przekazywany do wspomnianego dispatchera ktory ustawia kontroller i uruchamia jego akcje. Akcja juz sobie sama radzi z modelami i w zaleznosci od jej wyniku ustawia szablon badz forwarduje do nastepnej akcji. Co do szablonow to jeszcze nie wpadlem na zadne dobre rozwiazanie bo najpierw chce pozadnie skonczyc framea. Poki co robie sobie plik szablonu ktory wyswietla mi widok a w tym szablonie (smarty) proste include dla header i footer. Co do PDO. Zastanow sie czy przewidujesz zmiane bazy, jesli projekt nie jest duzy i nie masz zamiaru zmieniac bazy to po co angazowac jakies wielkie silniki do tego ? Napisz sobie jakies proste i wydajne DAO ewentualnie jesli zdecydujesz zmienic baze to sobie napiszesz nowe z zachowaniem interfejsu. P.S. Na stronie raczej netykieta nie nietykieta Ten post edytował thornag 22.09.2006, 16:53:05 -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Thornag dziex. Ale miałeś takiego pecha że własnie weszłem bo skończyłem przeglądać rapid (świetne rozwiązania). DAO nie wiem jak? Ma być takie coś $dao->query('* lub array("nick", "haslo")', 'tabela' array('parametry' = ' = lol', 'where' => ' nick = lol')); Jak? Wykorzystam pare pomysłów z rapide, ale jeszcze będziecie musieli mi pomóż
![]() 1. DAO jak? ![]() 2. Co robi Dispratcher (jakoś tak, w rapide był) 3. Token, o co chodzi, klasa Token? 4. Helpery? Popiszcie się Ci bardzije i mniej zaawansowani bo ja przy was jestem cienias ![]() Pozdrawia ciekawski BIM Nikt nie odpowiada ![]() No ale dopsize kolejne pytanie. Widziałem w rapide ze jest rapide/jakasklasa/klasa.class.php i rapide/jakas_klasa/interfence.php I wyowływane jest to tak: public function jakas(Rapide_jakasklasa_interfence $oInter) {} Czy to cos ala new? -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
public function jakas(Rapide_jakasklasa_interfence $oInter) {} Czy to cos ala new? Nie. To jest kontrola typow. Przyklad:
Zapewnia, ze dla danej metody trafi dokladnie obiekt zadanego typu. Adrian. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Co do DAO to chodzi o to zeby sobie przygotowac jakies API do obslugi bazy danych. Czyli robisz klase w ktorej masz metody typu getRow, getAll, insertRow itp, pozniej jak bedzie trzeba zmienic baze to nie zmieniach kodu aplikacji a jedynie implementacje klasy, reszta pozostaje ta sama. Przy zmianie pamietaj zeby interfejs byl taki sam i zeby metody tego interfejsu przyjmowaly te same argumenty i zwracaly to samo, inaczej nie obedzie sie bez zmiany kodu w aplikacji.
-------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
@prph żeby nie było że nie sprawdzam to masz błąd w class B
![]() Fatal error: Non-abstract method C::InnaFunkcja() must contain body in C:\WebServ\httpd\tt.php on line 22) i na koniec : z $oTest->testInterfejsu(new ![]() ![]() Dao, już conieco rozumiem. -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
bim2 => Przeciez to byl tylko pseudokod dla Ciebie. Jakbys oznaczyl klasy jako abstrakcyjne to jak chcialbys je pozniej konkretyzowac
![]() -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 15.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Sorry thornag, ale z tego co napisałeś to wynika, że DAO jest czymś w rodzaju abtrakcji dla bazy danych. A tak chyba nie jest (przynajmniej mi się tak wydaje). Czy nie powinno to wyglądać w ten sposób, że dla każdej klasy obiektu biznesowego istnieje odpowiadająca mu klasa DAO, której zadaniem jest powbieranie danych z bazy, pliku tekstowego czy xml'a.
Czyli np. dla klasy NewsModel powinna istnieć klasa NewsModelDAO. Która to posiada takie metody jak getNews, getAllNews, a nie getRow czy getAll. Przynajmniej tak mi się wydaje, że to tak powinno mniej więcej wyglądać, ale jeśli się mylę to proszę o sprostowanie... |
|
|
![]()
Post
#11
|
|
![]() Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
milus:
~thornag myli pojęcia (pisze o ADO). DAO polega dokładnie na tym jak przedstawiłeś. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Ups
![]() ![]() U mnei zazwyczaj wyglada to tak ze model np News sam w sobie posiada metody do pobierania tych newsow itp, i w tych metodach korzysta z ADO :PPP. Nie mysallem nigdy nad rozwiazaniem by dostep do danych implementowac w osobnej klasie. Czy to jest czesto praktykowana technika ? Jaka jest jej przewaga mad implementowaniem metod dostepowych w samym modelu (w sensie klasy dla Newsow itp) ? -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
2. Co robi Dispratcher (jakoś tak, w rapide był) 3. Token, o co chodzi, klasa Token? 4. Helpery? Ad2. Dispatcher rozporządza (dyspozytor) - odpala akcje. Chodzi o to, że frontkontroler podaje akcje w postaci tokena do naszego dyspozytora, on z niego czyta informacje i odpala. Ad3. Token to nic innego jak obiekt, ktory zawiera nazwę akcji, nazwę kontrolera, parametry. Taka akcja zrobiona na obiekt. Ad4. Helpery - pomocniki - np. Masz helpera w postaci czegoś co tworzy ci formularze. Piszesz sobie klase do obslugi formularzy i potem dodajesz ja do fw i nie uzywajac html (tylko php) w kontrolerze tworzysz formularz i ladujesz go do widoku |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Router to klasa ktora pobiera parametry z adresu i tworzy token dla dispatchera. Token ten zawiera w sobie nazwe kontrolera akcji i parametry. Dalej jest przekazywany do wspomnianego dispatchera ktory ustawia kontroller i uruchamia jego akcje. Ad2. Dispatcher rozporządza (dyspozytor) - odpala akcje. Chodzi o to, że frontkontroler podaje akcje w postaci tokena do naszego dyspozytora, on z niego czyta informacje i odpala. Kto ma racje? Tyle pmysłów ile atków na tym forum na temat mvc, że już zgłupiałem.. Napisałem sobie router, który m.in. pobiera z urla nazwę kontrolera, nazwę akcji i parametry, następnie tworzy sobie token (jet to tablica asocjacyjna). I teraz nie wiem co dalej. Można by to od razu przekazywać do frontcontrollera, który odpalałby akcje. Po co dispatcher? -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 16:12 |