Kontynuujemy temat routingu dla naszego frameworka MVC, który napiszemy. Do dzieła.
Nasz plik .htaccess:
RewriteEngine On
RewriteRule ^ entry.php
Nasz entry.php:
<?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
Teraz tworzymy plik home_index.php:
<?php
echo "from home_index.php";
Tworzymy też product_list.php:
<?php
echo "from product_list.php";
Okej, teraz się postarajmy, aby nasz helper załączał odpowiednie pliki jeżeli REQUEST URI będzie odpowiednie (/kontroler/akcja mapowane do kontroler_akcja.php):
<?php
class Helper {
public static function request_uri()
{
$uri = explode("/", $_SERVER['REQUEST_URI']);
$action = array_pop($uri);
$controller = array_pop($uri);
$path = __DIR__ . "/{$controller}_{$action}.php";
if(file_exists($path))
{
require $path;
}
else {
die("Wrong URI");
}
}
}
//http://localhost/sometry/home/index
Helper::request_uri();
//from home_index.php
Wydaje się dziecinnie proste.
Nadal jednak możemy to popsuć podając dobry URI, ale z query stringiem:
<?php
class Helper {
public static function request_uri()
{
$uri = explode("/", $_SERVER['REQUEST_URI']);
$action = array_pop($uri);
$controller = array_pop($uri);
$path = __DIR__ . "/{$controller}_{$action}.php";
if(file_exists($path))
{
require $path;
}
else {
die("Wrong URI");
}
}
}
//http://localhost/sometry/home/index?q=blabla
Helper::request_uri();
//Wrong URI
Nie powinno tak być, ścieżka jest dobra, tylko z query stringiem. Z tym sobie poradzimy następnym razem.