2011-07-31 28 views
23

Po pierwsze, jestem początkującym w PHP. I zadał pytanie tutaj: Refactoring require_once file in a project . Starałem się czytać o kontrolerze czołowym tak bardzo, jak tylko potrafię, ale nie mogę się dowiedzieć, jak to działa, a nawet o co w tym wszystkim chodzi.Co to jest Front Controller i jak jest on implementowany w PHP?

Czy ktoś może wyjaśnić w skrócie, jak to działa i o co w tym wszystkim chodzi?

Dzięki.

+0

Jest to pojedynczy punkt wejścia. Każde żądanie jest obsługiwane przez kontroler frontowy. Czytałeś http://en.wikipedia.org/wiki/Front_controller? –

+1

Tak, ale link nie zawiera zbyt wielu informacji na ten temat. Jak to się robi i takie rzeczy? –

Odpowiedz

42

Front Controller to wzorzec projektowy, w którym pojedynczy składnik w aplikacji odpowiada za obsługę wszystkich żądań do innych części aplikacji. Centralizuje wspólną funkcjonalność wymaganą przez resztę aplikacji. Templowanie, routing i bezpieczeństwo to typowe przykłady funkcji Front Controller. Zaletą korzystania z tego wzoru jest to, że gdy zachowanie tych funkcji wymaga zmiany, tylko niewielka część aplikacji wymaga modyfikacji.

W terminach sieci wszystkie żądania domeny są obsługiwane przez pojedynczy punkt wejścia (kontroler frontowy).

Niezwykle prosty przykład tylko funkcji routingu frontowego kontrolera. Używanie PHP obsługiwanego przez Apache wyglądałoby mniej więcej tak. Najważniejszym krokiem jest przekierować wszystkie żądania do kontrolera frontowego:

.htaccess

RewriteEngine On 
RewriteRule . /front-controller.php [L] 

przednie controller.php

<?php 

if ($_SERVER['REQUEST_URI'] == '/help') { 
    include 'help.php'; 
} elseif ($_SERVER['REQUEST_URI'] == '/calendar') { 
    include 'calendar.php'; 
} else { 
    include 'notfound.php'; 
} 
+0

dlaczego to nie działało, chyba że usunę odwrotny ukośnik "RewriteRule. front-controller.php [L] '? –

+0

również to spowodowało pętlę wewnętrznych wskazówek re! –