Autor wpisu: Łukasz Socha, dodany: 27.10.2011 16:13, tagi: oop, php, mvc
pobierz w .pdf(przeznaczone do wydruku)
W drugiej części artykułu o wzorcu MVC stworzymy część skryptu, odpowiedzialną za obsługę kategorii.
Tworzymy kontroler kategorii
Na początek stwórzmy plik index.php w głównym katalogu:
<?php include 'controller/categories.php'; if($_GET['task']=='categories') { $ob = new CategoriesController(); $ob->$_GET['action'](); }
Na podstawie zmiennej $_GET['task'] tworzony jest odpowiedni obiekt kontrolera (w tym wypadku CategoriesController). Zmienna $_GET['action'] określa z kolei akcję kontrolera.
Co robi kontroler? Na podstawie przekazanych wartości zmiennych (z adresu lub pól formularza) „wybiera” odpowiednią akcję skryptu oraz inicjuje odpowiednie modele i widoki. Kontroler nie powinien obrabiać danych. Ma on za zadanie tylko wywoływać odpowiednie reakcje logiki aplikacji oraz widoku odpowiedzialnego za wyświetlanie informacji. Przyjrzyjmy się plikowi controller/categories.php:
<?php /** * @author Łukasz Socha <kontakt@lukasz-socha.pl> * @version: 1.0 * @license http://www.gnu.org/copyleft/lesser.html */ include 'controller/controller.php'; class CategoriesController extends Controller{ public function index() { $view=$this->loadView('categories'); $view->index(); } public function add() { $view=$this->loadView('categories'); $view->add(); } public function insert() { $model=$this->loadModel('categories'); $model->insert(&$_POST); $this->redirect('?task=categories&action=index'); } public function delete() { $model=$this->loadModel('categories'); $model->delete($_GET['id']);; $this->redirect('?task=categories&action=index'); } }
Przeanalizujmy reakcje dla następujących adresów URL:
- ?task=categories&action=index – zostanie wywołana metoda index(), która inicjuje obiekt widoku categories, następnie zostaje wywołana metoda index()
- ?task=categories&action=add – zostanie wywołana metoda add(), która inicjuje obiekt widoku categories, następnie zostaje wywołana metoda add()
- ?task=categories&action=insert – zostanie wywołana metoda insert(), która inicjuje obiekt modelu categories, następnie zostaje wywołana metoda insert()
- ?task=categories&action=delete – zostanie wywołana metoda delete(), która inicjuje obiekt modelu categories, następnie zostaje wywołana metoda delete()
Mamy już utworzony kontroler. Przejdźmy teraz do modelu.
Tworzymy model kategorii
Model jest najbardziej istotnym elementem we wzorcu MVC – to on jest odpowiedzialny za logikę aplikacji. Ma za zadanie pobieranie/edycję danych z bazy danych (lub innych źródeł) oraz przetworzenie ich według wymagań skryptu, np: poddać filtracji, wykonać obliczenia itp.
Przeanalizujmy plik model/categories.php: