@Kshyhoo
Nie podawaj jej takich rozwiązań bo się tak nauczy i później będzie tak robiła. A za 2-3 tygodnie rozrośnie jej się za bardzo plik. Jak się uczy totalnie od zera to lepiej żeby wykorzystała prostą fabrykę bo nawet jeżeli jej nie do końca zrozumie to chociaż będzie miała porządek w kodzie i łatwiej jej się będzie programowało..
@topic
Poniżej zamieszczam kod. Gdy w adresie url podasz adres "index.php" to odpali się metoda IndexController->indexAction(), natomiast dla adresu "index.php?action=delete" odpali się metoda DeleteController->indexAction(). W przypadku podania zupełnie błędnych danych w adresie url odpali się metoda jak przy odwołaniu "index.php".
Oczywiście można ten kod rozbić na poszczególne pliki i utworzyć plik autoloader'a dzięki czemu pozbyjesz się 90% instrukcji warunkowych w swoim kodzie

<?php
/**
* Klasa uruchamiająca odpowiedni kontroller :)
*/
class Factory
{
static public function run
($action) {
$controller = self::getControllerName($action);
if( class_exists($controller, true) )
$obj = new $controller();
else
$obj = new IndexController();
$obj->indexAction();
}
static protected
function getControllerName
($action) {
return $action . 'Controller';
}
}
/**
* Interfejs dla kontrollerów
*/
interface Controller
{
public function indexAction();
}
/**
* Podstawowa obsługa, wykona się w przypadku podania nie prawidłowego kontrollera w zmiennej $_GET['action']
*/
class IndexController implements Controller
{
public function indexAction()
{
//Standardowa strona
}
}
/**
* Obsługa dodawania danych
*/
class InsertController implements Controller
{
public function indexAction()
{
//Strona służąca do dodania
}
}
/**
* Obsługa usuwania danych
*/
class DeleteController implements Controller
{
public function indexAction()
{
//Strona służąca do usuwania
}
}
/**
* Obsługa aktualizowania danych
*/
class UpdateController implements Controller
{
public function indexAction()
{
//Strona służąca do aktualizowania
}
}
//Wywołanie
if( !isset($_GET['action']) ) $_GET['action'] = 'index';
Factory::run($_GET['action']); //Przykładowy link localhost/index.php?action=insert << Dla kontrollera InsertController