2012-08-20 18:33:25 -04:00
|
|
|
<?php
|
2012-08-27 10:48:32 -04:00
|
|
|
/**
|
|
|
|
|
* Class Bootstrap
|
|
|
|
|
*
|
|
|
|
|
* This class tries encapsulate some common tasks on SysGeneric bootstrap file
|
|
|
|
|
*
|
|
|
|
|
* @author Erik Amaru Ortiz <aortiz.erik@gmail.com>
|
|
|
|
|
*/
|
2012-08-20 18:33:25 -04:00
|
|
|
class Bootstrap
|
|
|
|
|
{
|
|
|
|
|
public $startingTime;
|
|
|
|
|
public $autoloader;
|
|
|
|
|
public $routes = array();
|
|
|
|
|
|
|
|
|
|
protected $matchRoute = array();
|
|
|
|
|
|
|
|
|
|
public function __construct($config)
|
|
|
|
|
{
|
|
|
|
|
$this->startingTime = microtime(true);
|
|
|
|
|
|
|
|
|
|
// Defining the PATH_SEP constant, he we are defining if the the path separator symbol will be '\\' or '/'
|
|
|
|
|
define('PATH_SEP', DIRECTORY_SEPARATOR);
|
|
|
|
|
|
|
|
|
|
$config['path_trunk'] = rtrim($config['path_trunk'], PATH_SEP) . PATH_SEP;
|
|
|
|
|
|
|
|
|
|
if (! array_key_exists('path_trunk', $config)) {
|
|
|
|
|
throw new Exception("path_trunk config not defined!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (! is_dir($config['path_trunk'] . 'gulliver')) {
|
|
|
|
|
throw new Exception(sprintf(
|
|
|
|
|
"Gulliver Framework not found in path trunk: '%s'", $config['path_trunk']
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
define('PATH_TRUNK', $config['path_trunk']);
|
|
|
|
|
|
|
|
|
|
// Including these files we get the PM paths and definitions (that should be just one file.
|
2017-08-02 16:06:56 -04:00
|
|
|
|
2012-08-20 18:33:25 -04:00
|
|
|
|
|
|
|
|
$this->autoloader = Autoloader::getInstance();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function addRoute($name, $pattern, $basePath, $type = '', $skip = false)
|
|
|
|
|
{
|
|
|
|
|
$this->routes[$name] = array(
|
|
|
|
|
'pattern' => $pattern,
|
|
|
|
|
'basePath' => $basePath,
|
|
|
|
|
'type' => $type,
|
|
|
|
|
'skip' => $skip
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function route($uri)
|
|
|
|
|
{
|
|
|
|
|
foreach ($this->routes as $name => $route) {
|
|
|
|
|
//$urlPattern = addcslashes( $urlPattern , '/'); ???
|
|
|
|
|
$route['pattern'] = addcslashes( $route['pattern'] , './');
|
|
|
|
|
$route['pattern'] = '/^' . str_replace(array('*','?'), array('.*','.?'), $route['pattern']) . '$/';
|
|
|
|
|
|
|
|
|
|
// remove url GET params '..?var=val&....'
|
|
|
|
|
list($uri, ) = explode('?', $uri);
|
|
|
|
|
|
|
|
|
|
if (preg_match($route['pattern'], $uri, $match)) {
|
|
|
|
|
$this->matchRoute = $route;
|
|
|
|
|
$this->matchRoute['name'] = $name;
|
|
|
|
|
$this->matchRoute['match'] = $match[1];
|
|
|
|
|
$this->matchRoute['path'] = $this->matchRoute['basePath'] . $match[1];
|
|
|
|
|
|
|
|
|
|
return $route['skip'] ? false : true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getMatchRoute()
|
|
|
|
|
{
|
|
|
|
|
return $this->matchRoute;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function dispatchResource()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function configure()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function registerClasses()
|
|
|
|
|
{
|
|
|
|
|
$this->autoloader->registerClass('G', PATH_TRUNK . 'gulliver/system/class.g');
|
|
|
|
|
}
|
|
|
|
|
}
|