Zaczynamy zabawę routingiem – bez tego nigdy nie zbudujemy własnego frameworka MVC. Do dzieła.

W folderze, w którym się znajdujemy (u mnie to sometry) tworzymy plik .htaccess:

RewriteEngine On
RewriteRule ^ entry.php

Tak jak to zapisaliśmy, każdy URL będzie przekierowywany do pliku entry.php, który musimy utworzyć:

<?php 
echo "from entry.php";

W moim przypadku odświeżyłem po prostu adres:

http://localhost/sometry/enum.php

Ruch został przekierowany do pliku entry.php.

Teraz poznajmy request_uri. W pliku entry.php piszemy:

<?php 

class Helper {
    public static function request_uri()
    {
        echo $_SERVER['REQUEST_URI'];
    }
}

Helper::request_uri();
///sometry/enum.php

Dostajemy w ten sposób URI, jakie wpisaliśmy.

Teraz zmieńmy trochę klasę:

<?php 

class Helper {
    public static function request_uri()
    {
        print_r(explode("/", $_SERVER['REQUEST_URI']));
    }
}

Helper::request_uri();
//Array ( [0] => 
//[1] => sometry 
//[2] => enum.php )

Okej, powinniśmy już widzieć, do czego to zmierza. Zamiast enum.php, wpiszmy /controller/action:

<?php 

class Helper {
    public static function request_uri()
    {
        print_r(explode("/", $_SERVER['REQUEST_URI']));
    }
}

//http://localhost/sometry/controller/action

Helper::request_uri();
// Array ( [0] => 
// [1] => sometry 
// [2] => controller 
// [3] => action )

Teraz możemy zrobić coś takiego:

<?php 

class Helper {
    public static function request_uri()
    {
        $uri = explode("/", $_SERVER['REQUEST_URI']);
        $action = array_pop($uri);
        $controller = array_pop($uri);
        echo "Controller: $controller, Action: $action";
    }
}

//http://localhost/sometry/home/index

Helper::request_uri();
//Controller: home, Action: index

Okej, jesteśmy na dobrej drodze. Pomyślmy jak można to wykorzystać. Jeżeli się nie uda – w następnej lekcji pokażę, co z tym zrobić.