Example #1
0
 /**
  * Importa ya sea modelos o vistas de la App en ejecución o
  * de otra.
  *
  * Para llamar modelos de otra aplicación.
  *
  * $this->import('model', 'otra_app.modelo');
  *
  * Importar vistas de otras apps o de la misma.
  *
  * De la misma aplicación:
  *
  * $this->import('view', 'mi_vista');
  *
  * Desde otra aplicación:
  *
  * $this->import('view', 'otra_app.mi_vista');
  *
  * @param  string $type
  * @param  string $toImport
  */
 public function import($type, $toImport)
 {
     $pathToImport = '';
     $import = '';
     // Valida si se esta importando de la misma App o de otra
     if (!strstr($toImport, '.')) {
         $pathToImport = App::getInstance()->getAppName();
     } else {
         $importSegments = explode('.', $toImport);
         // Valida que la aplicación este cargada.
         if (App::getInstance()->exists($importSegments[0])) {
             $pathToImport = $importSegments[0];
             $import = $importSegments[1];
         } else {
             throw new ViewException("Error importing ({$type}) from ({$toImport}).");
         }
     }
     // Valida el tipo de objeto a importar
     if ($type === 'model') {
         $pathToImport .= 'models/' . $import;
     } elseif ($type === 'view') {
         $pathToImport .= 'views/' . $import;
     } else {
         throw new ViewException("Imported object type ({$type}) is invalid.");
     }
     Setup::importFromApp($pathToImport);
 }
Example #2
0
}
/*
 * Deshabilita la salida de errores por pantalla.
 */
ini_set('display_errors', 0);
/*
 * Configura la zona horaria.
 */
date_default_timezone_set(Settings::getInstance()->get('timezone'));
/*
 * Carga los alias.
 * Los alias de clases se definen en el archivo de configuraciones 'settings.php'.
 */
$aliases = Settings::getInstance()->get('aliases');
AliasLoader::getInstance($aliases)->register();
/*
 * Inicializa los requerimientos de ejecución.
 */
Setup::initialize();
/*
 * Carga las rutas.
 */
$routes = APPS_ROOT . '/routes.php';
if (file_exists($routes)) {
    require $routes;
}
/*
 * Todos los objeto propios del framework deberian validad que este define
 * exista de no ser haci es un ataque y se debe matar la ejecucion.
 */
define('FOREVERPHP_LOADED', microtime(true));
Example #3
0
 /**
  * Ejecuta la vista solicitada.
  *
  * @param  mixed $route
  * @return void
  */
 public function run($route)
 {
     if (!is_array($route)) {
         $this->makeResponse($route);
     }
     // Se separa la vista por ".", si es que la vista esta en subcarpetas
     // NOTA: En ForeverPHP los niveles de directorios se separan por "."
     $viewSegments = explode('.', $route['view']);
     // Nombre del metodo a ejecutar
     $method = $route['method'];
     Setup::toDefine('TEMPLATES_PATH', APPS_ROOT . DS . $this->appName . DS . 'Templates' . DS);
     Setup::toDefine('STATIC_PATH', APPS_ROOT . DS . 'static' . DS);
     $viewPath = '';
     $view = $viewSegments[0];
     if (count($viewSegments) > 1) {
         $view = $viewSegments[count($viewSegments) - 1];
         // Se elimina el ultimo segmento de la vista, que es el nombre del archivo vista
         array_pop($viewSegments);
         // Se unen los segmentos de la vista con el separador de nombres de espacio
         $viewPath = implode('\\', $viewSegments);
         $viewPath .= '\\';
     }
     // Verifico que la vista hereda de View
     if ($view instanceof \ForeverPHP\View\View) {
         throw new ViewException("La vista ({$view}) no hereda de View.");
     }
     // Creo la vista y la ejecuto y le asigno el request a la vista para manipulacion interna
     if (Settings::getInstance()->get('usingNamespaces')) {
         $view = '\\Apps\\' . $this->appName . '\\Views\\' . $viewPath . $view;
     }
     $v = new $view();
     // Ejecuta la funcion y almacena su valor de retorno
     $returnValue = $v->{$method}();
     // Se construye la respuesta
     $this->makeResponse($returnValue);
 }