Example #1
0
 public function __invoke(Route $route = NULL)
 {
     $router = Router::getInstance();
     if (is_null($route)) {
         $route = $router->GetByRequest();
     }
     return call_user_func_array([$route->getController(), $route->action], $route->attributes);
 }
Example #2
0
 /**
  * 
  * Redireciona a requisição e encerra a execução do script
  * 
  * @param Route|string|null $params 
  * 
  * @return void
  * 
  */
 public function redirect($params = NULL)
 {
     if (empty($params)) {
         return $this->header('Location: ' . Router::href());
     }
     if (is_string($params)) {
         return $this->header('Location: ' . $params);
     }
     if (is_array($params)) {
         $controller = empty($params['controller']) ? 'main' : $params['controller'];
         $action = empty($params['action']) ? 'index' : $params['action'];
         return $this->header('Location: ' . Router::href("{$controller}/{$action}"));
     } else {
         return $this->header('Location: ' . Router::href());
     }
     exit;
 }
Example #3
0
 public static function href($uri = '')
 {
     return Router::href($uri);
 }
Example #4
0
 public static function RUN($application)
 {
     try {
         $config = Config::SetApplication($application);
         if (is_readable($config->dir . 'config.php')) {
             require_once $config->dir . 'config.php';
         }
     } catch (InvalidApplicationException $e) {
         echo self::Error($e->getMessage());
         return FALSE;
     }
     $request = Request::getInstance();
     // Router em implementação
     $router = Router::getInstance();
     $route = $router->GetByRequest();
     if ($config->onlyroutes && !$route) {
         $route = Router::notfound();
     }
     if ($route) {
         $request->controller = $route->controller;
         $request->action = $route->action;
         $request->params = (object) $route->attributes;
     } else {
         $request->parseRoute();
     }
     $class = "\\Controller\\{$request->controller}Controller";
     // Retorno caso configuração $outputreturn do controller seja true
     $output = '';
     try {
         if (!class_exists($class)) {
             throw new Exception("A URL {$request->uri} é inválida.");
         }
         $app = new $class();
     } catch (Exception $e) {
         echo self::Error($e->getMessage());
         return FALSE;
     }
     if (!empty($request->post['mvc:model'])) {
         $model = '\\Model\\' . array_remove($request->post, 'mvc:model') . 'Model';
         try {
             $param = new $model($request->post);
             if ($param) {
                 $param = [$param];
             }
         } catch (Exception $e) {
             $app->setOutput($app->index());
             $app->output();
             return FALSE;
         }
     } else {
         if (!!$route && count($route->attributes) > 0) {
             $param = $route->attributes;
         } else {
             if (empty($request->lost) && !is_numeric($request->lost)) {
                 $param = NULL;
             } else {
                 $param = [$request->lost];
             }
         }
     }
     try {
         $output = $app->execute($param);
     } catch (Exception $e) {
         echo self::Error($e->getMessage());
         return FALSE;
     }
     if ($app->outputreturn) {
         $app->setOutput($output);
     }
     $app->output();
     return TRUE;
 }
Example #5
0
 * Configura a aplicação, setando o name e URL
 * Outras configurações também são possíveis, como conexão com banco,
 * Configurações de e-mail e etc.
 *
 *
 * English:
 *
 * Set the application by setting the name and URL
 * Other settings are also posible like connection to the database,
 * E-mail settings, etc.
 **/
Config::Set(['url' => 'http://localhost/Base/public_html/', 'name' => 'example']);
// Seta a rota de erro 404
Router::notfound(['controller' => 'Error', 'action' => 'index']);
// Setá a rota padrão, home/index
Router::main(['controller' => 'Main', 'action' => 'index']);
// Apenas replicando a rota  padrão para ser acessada através do endereço /index
Router::route('/index', Router::main());
// Rota para o formulário de LOGIN, acessível apenas via GET
Router::get('/entrar', 'entrar', ['controller' => 'Login', 'action' => 'index']);
// Replicando a rota /entrar para /login. Permitira acesso pelo mesmo Method que a rota /entrar (GET)
Router::route('/login', 'login.form', Router::GetByName('entrar')->_clone());
// Rota para realizar o login, acessível apenas via POST
Router::post('/login', 'login', ['controller' => 'Login', 'action' => 'login']);
// Rota: GET /post/<id>
Router::get('/post/:id', ['controller' => 'Main', 'action' => 'teste'])->params(['id' => '\\d+']);
// Rota: GET /post/<algum-endereco>
Router::get('/post/:slug', ['controller' => 'Main', 'action' => 'action'])->params(['slug' => '[a-zA-Z0-9\\-_]+']);
// Rota: GET /post/<DD-MM-YYYY>/<algum-endereco>
Router::get('/post/:date/:slug', ['controller' => 'Main', 'action' => 'pdate'])->params(['date' => '[0-9]{2}-[0-9]{2}-[0-9]{4}', 'slug' => '[a-zA-Z0-9\\-_]+']);