Revision: 42272
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 2, 2011 16:32 by robertnduati
Initial Code
<?php
class Router {
function get()
{
//APP_BASE_URL is a constant i set for the framwork. It is the full url to the
//root folder of the framework
$my_url = $this->str_replace_once(APP_BASE_URL, '', $this->getfullurl());
//This removes the query string part of the url so that it can be evaluated
if($_SERVER["QUERY_STRING"]) {
$my_url = $this->str_replace_once("?" . $_SERVER["QUERY_STRING"], '', $my_url);
}
$my_url = $this->trimTrailingSlashes($my_url);
$requestURI = explode('/', $my_url);
$function = $requestURI[0];
$parameters_str = '';
for($i = 1; $i < count($requestURI); $i++){
$parameters_str .= $requestURI[$i];
if($i != count($requestURI)-1) {
$parameters_str .= ', ';
}
}
//The function returns a PHP command as a string so that i can be used in eval()
if($function){
return '$this->'.$function.'('.$parameters_str.');';
} else {
return '$this->index();';
}
}
//THESE FOLLOWING FUNCTIONS ARE JUST HELPERS
function str_replace_once($str_pattern, $str_replacement = '', $string){
if (strpos($string, $str_pattern) !== false){
$occurrence = strpos($string, $str_pattern);
return substr_replace($string, $str_replacement, strpos($string, $str_pattern), strlen($str_pattern));
}
return $string;
}
function trimTrailingSlashes($str){
$str = trim($str);
return $str == '/' ? $str : rtrim($str, '/');
}
function getfullurl(){
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$protocol = substr(strtolower($_SERVER["SERVER_PROTOCOL"]), 0, strpos(strtolower($_SERVER["SERVER_PROTOCOL"]), "/")) . $s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
return $protocol . "://" . $_SERVER['SERVER_NAME'] . $port . $_SERVER['REQUEST_URI'];
}
}
Initial URL
Initial Description
Initial Title
Routing class for tinyMvc
Initial Tags
Initial Language
PHP