Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MVC] Kontroler
Forum PHP.pl > Forum > PHP > Object-oriented programming
szczurek
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...
Turgon
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
szczurek
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ź.
Turgon
Ja też nie załapałem o co ci chodzi za bardzo. To starałem się jakoś trafić smile.gif
Ociu
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.
Strzałek
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
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-2025 Invision Power Services, Inc.