Example #1
0
 /**
  *  Метод принимающий управление от фронт контроллера
  *  @return void
  */
 public function run()
 {
     //получение строки запроса
     $uri = $this->getUri();
     $i = 1;
     //проверка наличия данного запроса в routes.php
     foreach ($this->routes as $uriPattern => $path) {
         if (preg_match("~{$uriPattern}~", $uri)) {
             //получаем внутренний путь из внешнего согласно параметру
             $internalRoute = preg_replace("~{$uriPattern}~", $path, $uri);
             //определение контроллера и экшена обрабатывающего запрос
             $segments = explode('/', $internalRoute);
             $controllerName = ucfirst(array_shift($segments) . 'Controller');
             $actionName = 'action' . ucfirst(array_shift($segments));
             $parameters = $segments;
             //проверка на существование контроллера и его экшена
             if (!class_exists($controllerName) || !method_exists(new $controllerName(), $actionName)) {
                 $controllerName = 'SiteController';
                 $actionName = 'actionIndex';
             }
             //Создание объекта контроллера и вызов его экшена
             $controllerObject = new $controllerName();
             /* Вызываем необходимый метод ($actionName) у определенного 
              * класса ($controllerObject) с заданными ($parameters) параметрами
              */
             $result = call_user_func_array(array($controllerObject, $actionName), $parameters);
             if ($result != null) {
                 break;
             }
         } else {
             if (count($this->routes) == $i) {
                 //если нет совпадений или введен не существующий адрес, то вызовет SiteController
                 $controllerObject = new SiteController();
                 $result = $controllerObject->actionIndex();
             }
         }
         $i++;
     }
 }
Example #2
0
<?php

use TPP\Models\TPP;
require "vendor/autoload.php";
$time = microtime(true);
prioIncludes();
includes();
new Init();
if (TPP_DEBUG) {
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
}
TPP::initializeConnection();
$site = new SiteController();
$site->actionIndex();
echo '<h1>loaded in ' . round(microtime(true) - $time, 7) . ' secs</h1>';
exit;
function prioIncludes()
{
    $priorityIncludes = ['controllers' => ['Controller'], 'models' => ['Init']];
    foreach ($priorityIncludes as $key => $prio) {
        foreach ($prio as $pr) {
            include_once $key . '/' . $pr . '.php';
        }
    }
}
function includes()
{
    $includes = ['controllers', 'models', 'helpers'];
    foreach ($includes as $inc) {
        foreach (glob($inc . "/*.php") as $filename) {