routes массив,
// который хранится в файле routes.php, при помощи - include
$this->routes = include($routesPath);
}
// метод будет принимать управление от фронтконтроллера
public function run()
{
echo ("Запуск контроллера!");
// var_dump($this->routes);
// обратимся к методу getURI()
$uri = $this->getURI();
echo $uri;
foreach ($this->routes as $uriPattern => $path) {
// echo "
$uriPattern -> $path";
if (preg_match("~$uriPattern~", $uri)) {
$segments = explode('/', $path);
$controllerName = array_shift($segments) . 'Controller';
// делает первую букву строки заглавной
$controllerName = ucfirst($controllerName);
var_dump($controllerName);
// выводим имя контроллера
$actionName = 'action' . ucfirst(array_shift($segments));
$controllerFile = __DIR__ . '/../app/controller/' . $controllerName . '.php';
var_dump($controllerFile);
if (file_exists($controllerFile)) {
include_once($controllerFile);
}
$controllerObject = new $controllerName;
$result = $controllerObject->$actionName();
// выводим название экшена
echo '
' . $result;
}
}
}
private function getURI()
{
if (!empty($_SERVER['REQUEST_URI'])) {
return trim($_SERVER['REQUEST_URI'], '/');
}
}
}