Denne koden forutsetter at seigmann.php-fila faktisk eksisterer.
Ehm, nei! Det vil si den gjør jo forsåvidt det ettersom jeg har lagt til en include til en seigmann.php fil i en annen mappe, men kontrolleren forutsetter ingenting, den fanger opp en hver URL som ikke går til en fysisk fil eller mappe.
Grunnen til at man ikke ønsker å fange opp filer som eksisterer er selvfølgelig at det blir et helvete med statiske ressurser som bilder, css og js filer, slik at de leveres direkte utenom kontrolleren.
Det er jo et så enkelt eksempel som mulig på hvordan en kontroller virker, uten å bruke store klasser. Ønsker man å gå videre og se på MVC og mer avanserte ting er det bare å lese kildekoden til Laravel, Symfony, Fuel eller lignende, de bruker alle det samme prinsippet, men i mer kompliserte klasser. Selv Wordpress bruker det samme prinsippet i sin kontroller.
Man videresender altså alt utenom statiske ressurser i .htaccess, slik at uansett hvilken URL som skrives inn, forutsatt at det ikke er til en eksisterende fil, så ender man opp i controller.php, og i controller.php fanger man opp det man ønsker, og sender 404 for resten.
Den enkleste måten å fange opp forskjellige adresser på er å sjekke URL'en og bruke en switch, hva man gjør i den switched er fritt valg, jeg bare skrev et kjapt eksempel, her er et annet
PHP:
$url = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
switch($url[0]) {
case '': //startside
echo "startsiden";
break;
case 'side1': // http://www.minside.no/side1/
echo "side1";
break;
case 'side2': // http://www.minside.no/side2/
switch($url[1]) {
case 'info': // http://www.minside.no/side2/info/
echo "side2 - info";
break;
}
break;
default: // alt annet
header('HTTP/1.0 404 Not Found');
echo "<h1>404 Not Found</h1>";
echo "The page that you have requested could not be found.";
exit();
}
og slik lager man verdens enkleste kontroller, og det finnes flere sider på nettet hvor man kan se litt andre versjoner av samme prinsipp
Simple PHP Front Controller | TechnoTaste
PHP Tutorials Examples Model View Controller MVC
PHP Master | An Introduction to the Front Controller Pattern, Part 1
Building a PHP Front Controller - O'Reilly Media