Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC] Kontroler, Jak się do tego zabrać
szczurek
post 6.03.2007, 18:49:34
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

Ostrzeżenie: (10%)
X----


No właśnie jak dotąd mimo że używałem smarty do tworzenia widoków i operacje do wykonywania na bazie danych w osobnych klasach ale łączyłem to zawsze na zasadzie
  1. <?php
  2. switch($zmienna)
  3. {
  4. case wartosc:akcja ;
  5. ...
  6. }
  7. ?>

w danym pliku. Aktualnie chciałbym to obsłużyć trochę inaczej. Czytając wprowadzenie do MVC i parę innych
doszedłem do wniosku że najlogiczniej byłoby stworzyć klasę która przyjmie wszystkie dane typu GET, POST, COOKIES, może jeszcze coś z SERVER, sprawdzi pod kątem zawartości pozamienia znaki na encje. itd.
Później sprawdzi w pliku konfiguracyjnym jaka akcja jest przypisana do danej zmiennej lub wartości tej zmiennej i ją wywoła.

Tylko nie bardzo wiem jak się za to zabrać od strony kodu. Głównie jaka miałaby być konstrukcja pliku konfiguracyjnego.

Nie wiem czy w dobrą stronę kombinuję no i ma kodową pustkę w głowie...


--------------------
"Nie masz żadnej szansy, ale ją wykorzystaj" Arthur Schopenhauer
wiersze
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Turgon
post 6.03.2007, 20:05:35
Post #2





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Po co bawić się w wybieranie z pliku konfiguracyjnego. Formatuj jednolicie z Konwencją nazewniczą klas np. HomeController smile.gif i wtedy wymagasz w Urlu home i tyle tongue.gif Żeby nie było przykład.

  1. <?php
  2. $controller = ucfirst(strtolower($_GET['c'])).'Controller';
  3. $action = ucfirst(strtolower($_GET['a'])).'Action';
  4. $c = new $controller;
  5. $c->{$action};
  6. ?>


Pomijam ładowanie pliku z klasą smile.gif i rozdział na Router i Dispatcher smile.gif


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
szczurek
post 6.03.2007, 20:38:30
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 1.10.2006
Skąd: Bydgoszcz

Ostrzeżenie: (10%)
X----


Chyba rozumiem o co Ci chodziło(co mnie pociesza, że może nie jestem aż tak głupi)
ale czy uda mi się realizować to kodem, hmm tego już taki pewny nie jestem. W każdym razie dzięki za podpowiedź.


--------------------
"Nie masz żadnej szansy, ale ją wykorzystaj" Arthur Schopenhauer
wiersze
Go to the top of the page
+Quote Post
Turgon
post 6.03.2007, 20:45:20
Post #4





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Ja też nie załapałem o co ci chodzi za bardzo. To starałem się jakoś trafić smile.gif


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
Ociu
post 7.03.2007, 14:50:45
Post #5





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Ja proponuję ściągnąć jakiś prosty framework i na jego postawie pisać. Dla przykładu code igniter czy cakephp.
A co do samego problemu, pytasz o ogólną budowę frameworka. Pobranie nazwy kontrolera to nie taka prosta sprawa. Ja pisząc framework rozpisałem to tak: Request obsługuje cookie, get, post, server, to przechodzi przez kontroler, który sprawdza, czy istnieją takie kontrolery, akcje, widoki ew. templaty, potem dispatcher.

Najlepiej będzie jak przejrzysz te frameworku wspomniane wyżej.
Go to the top of the page
+Quote Post
Strzałek
post 7.03.2007, 18:57:51
Post #6





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

Ostrzeżenie: (0%)
-----


Przejżyj sobie tak jak poleca Ci to Ociu jakiś prosty framework. Cake? Wystarczająco prosty aby po przejżeniu wiedzieć o co chodzi w tym temacie. MVC to wzorzec. A każdy wzorzec ma tyle implementacji ilu programistów. MVC zakłada że mają być oddzielone 3 warstwy aplikacji: modelu (pozyskiwanie danych), widoku (wyświetlenie), controlera (obsługuję rządania), w dużym skrócie. I teraz jak to rozwiązać? Ja to rozwiązałem bardzo prosto. FrontController obsługuje rządanie, włącza Controller (podobnie jak pokazał to kodem Turgon), i kontroler korzystając z modelu i widoku rządzi się. Przykładowo pobiera wszystkie newsy (NewsContainer::findAll()), i następnie je wyświetla ($view -> render('news/showAll.php')). To tak w telegraficznym skrócie.

Jak już mówiłem zobacz sobie cake. Przeczytaj temat o MVC na PRO i artykuł hwak'a na wortalu. Przeczytaj z 2-3 razy. Później coś napisz, by za jakiś czas mądrzyć się na forum tak jak ja czynię to teraz Rkingsmiley.png


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 01:53