Exemple #1
0
 public function buildRoute($uri, $params = null)
 {
     try {
         $params = (array) $params;
         $params['uri'] = $uri;
         $uri = Dispatcher::execute($this->build, $params);
     } catch (\Exception $e) {
         //
     }
     return $uri;
 }
 /**
  * Realiza el dispatch de una ruta
  *
  * @return Object
  */
 public static function execute($route)
 {
     extract($route, EXTR_OVERWRITE);
     if (!(include_once APP_PATH . "controllers/{$controller_path}" . '_controller.php')) {
         throw new KumbiaException(NULL, 'no_controller');
     }
     //Asigna el controlador activo
     $app_controller = Util::camelcase($controller) . 'Controller';
     $cont = self::$_controller = new $app_controller($module, $controller, $action, $parameters);
     View::select($action);
     View::setPath($controller_path);
     // Se ejecutan los filtros before
     if ($cont->k_callback('initialize') === FALSE) {
         return $cont;
     }
     if ($cont->k_callback('before_filter') === FALSE) {
         return $cont;
     }
     //Se ejecuta el metodo con el nombre de la accion
     //en la clase de acuerdo al convenio
     if (!method_exists($cont, $action)) {
         throw new KumbiaException(NULL, 'no_action');
     }
     //Obteniendo el metodo
     $reflectionMethod = new ReflectionMethod($cont, $action);
     //k_callback y __constructor metodo reservado
     if ($reflectionMethod->name == 'k_callback' || $reflectionMethod->isConstructor()) {
         throw new KumbiaException('Esta intentando ejecutar un método reservado de KumbiaPHP');
     }
     //se verifica que el metodo sea public
     if (!$reflectionMethod->isPublic()) {
         throw new KumbiaException(NULL, 'no_action');
     }
     //se verifica que los parametros que recibe
     //la action sea la cantidad correcta
     $num_params = count($parameters);
     if ($cont->limit_params && ($num_params < $reflectionMethod->getNumberOfRequiredParameters() || $num_params > $reflectionMethod->getNumberOfParameters())) {
         throw new KumbiaException("Número de parámetros erroneo para ejecutar la acción \"{$action}\" en el controlador \"{$controller}\"");
     }
     $reflectionMethod->invokeArgs($cont, $parameters);
     //Corre los filtros after
     $cont->k_callback('after_filter');
     $cont->k_callback('finalize');
     //Si esta routed volver a ejecutar
     if (Router::getRouted()) {
         Router::setRouted(FALSE);
         return Dispatcher::execute(Router::get());
         // Vuelve a ejecutar el dispatcher
     }
     return $cont;
 }
Exemple #3
0
 /**
  * Función Principal donde se ejecutan los controladores
  *
  * @params string $url url
  * @return boolean
  */
 public static function main($url)
 {
     /**
      * El Router analiza la url
      **/
     Router::rewrite($url);
     /**
      * Ciclo del enrutador
      */
     $controller = Dispatcher::execute();
     while (Router::getRouted()) {
         Router::setRouted(false);
         $controller = Dispatcher::execute();
     }
     /**
      * Renderiza la vista
      **/
     if ($controller->view || $controller->template) {
         require CORE_PATH . 'kumbia/view.php';
         View::render($controller, $url);
     } else {
         ob_end_flush();
     }
     // Fin del request
     exit;
 }
}
// @see Router
require CORE_PATH . 'kumbia/router.php';
//@see Load
require CORE_PATH . 'kumbia/load.php';
// @see Dispatcher
require CORE_PATH . 'kumbia/dispatcher.php';
// @see Controller
require APP_PATH . 'libs/application_controller.php';
// @see KumbiaView
require APP_PATH . 'libs/view.php';
try {
    // Bootstrap de la aplicacion
    require APP_PATH . 'libs/bootstrap.php';
    // Dispatch y renderiza la vista
    View::render(Dispatcher::execute(Router::rewrite($url)), $url);
} catch (KumbiaException $e) {
    KumbiaException::handle_exception($e);
}
// Autocarga de clases
function auto($class)
{
    // Optimizando carga de ActiveRecord
    if ($class == 'ActiveRecord') {
        return require APP_PATH . 'libs/active_record.php';
    }
    // Pasando a smallcase
    $class = Util::smallcase($class);
    if (is_file(APP_PATH . "extensions/helpers/{$class}.php")) {
        return require APP_PATH . "extensions/helpers/{$class}.php";
    }
Exemple #5
0
<?php

/**
* M PHP Framework
* @package      M
*/
/**
* M PHP Framework
*
* Controller main file for default app
*
* @package      M
* @author       Arnaud Sellenet <demental at github>

* @license      http://opensource.org/licenses/lgpl-license.php GNU Lesser General Public License
* @version      0.1
*/
define('APP_NAME', '{$APP_NAME}');
require '{$APP_RELATIVE_FILE_TO_ROOT}/M_Startup.php';
require APP_ROOT . 'app/' . APP_NAME . '/routing.php';
$result = Net_URL_Mapper::getInstance()->match($_GET['route']);
$getvalues = array_merge($result, $_GET);
$requestvalues = array_merge($_POST, $get);
$request = new MRequest($getvalues, $requestvalues);
$d = new Dispatcher($request);
$d->setConfig(PEAR::getStaticProperty('Dispatcher', 'global'));
$d->execute();
header('Content-type:text/html; charset=utf-8');
echo $d->display();
Exemple #6
0
<?php

/**
 *  ====== COPYRIGHT ======
 *  Suicide MVC, A Simple RAD Framework
 *  Copyright (c) Devin Ireland, http://devinireland.com
 *
 *  Licensed under The Microsoft Public License
 *  See LICENSE-SMVC.txt in the root folder of this source code.
 *  Redistributions of files must retain this copyright notice.
 *  =======================
 *  
 *  ----- File Description -----
 *  This is the root index file that handles requests by 
 *  handing the GET variables off to the dispatcher.
 */
require_once 'Config/global.php';
require_once 'Config/global_script.php';
// Dispatcher initializes the controller and view.
$dispatcher = new Dispatcher(isset($_GET['page']) ? $_GET['page'] : NULL, isset($_GET['action']) ? $_GET['action'] : NULL, isset($_GET['argument']) ? $_GET['argument'] : NULL);
$dispatcher->execute();
Exemple #7
0
 public function execute($callback)
 {
     return Dispatcher::execute($callback, $this->params);
 }
Exemple #8
0
 public function redirect404($modulaction, $vars = null, $lang = null, $secure = null)
 {
     header('Status: 404');
     header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
     $arr = explode('/', $modulaction);
     $d = new Dispatcher($arr[0], $arr[1], $this->_params);
     $d->execute();
     echo $d->display();
     exit(0);
 }