aca esta el frontcontroller tuve que eliminar la declaracion de atributos:
Código PHP:
Ver originalclass Router {
function __construct($param) {
$this->servidor = $_SERVER['HTTP_HOST'];
$this->ubicacion = explode('/',$param); }
$this->path = implode('/',$this->ubicacion);
$ruta = implode('/',$this->ubicacion); $this->ruta_absoluta = $ruta.'/' ;
}
else {
$ruta = implode('/',$this->ubicacion); $this->ruta_absoluta = $ruta.'/' ;
}
$this->ruta = $_SERVER['DOCUMENT_ROOT'].$ruta.'/';
}
public function route() {
include_once(PATH_ROOT.'/configuracion.php');
$config->set('root',$this->ruta);
$path = $this->ruta;
//valido si no estoy en el root y seteo el nuevo path
if(strpos($this->path,'admin')) { $path = $path.'admin';
$config->set('urlRoot','http://'.$this->servidor.$this->ruta_absoluta);
}
else {
$path = $path.'website';
$config->set('urlRoot','http://'.$this->servidor.$this->ruta_absoluta);
}
$this->loader($config->get('root').$config->get('core'));
if (file_exists($config->get('path_root').'router.php')) { // cargo el archivo con las reglas de ruteo
include $config->get('path_root').'router.php';
}
echo "routes<pre>";
echo"</pre>";
$url = Url::singleton();
//seteo la url
$this->uri = str_replace('.'.$config->get('prefijo'),'',$url->fetchUri()); echo "uri Server : ".$_SERVER['REQUEST_URI']."<br/>";
echo "<pre>";
echo"</pre>";
echo "uri: ".$this->uri."<br/>";
$url->explodeSegments();
echo "explodesegment<pre>";
echo"</pre>";
if(!empty ($this->routes)){ echo "entro<br/>";
$this->parseRoutes();
}
echo "uri: $uri<br/>";
echo "this->uri: ".$this->uri."<br/>";
if(strpos($this->uri,'index.php?') || strpos($_SERVER['REQUEST_URI'],'index.php?') !== FALSE || !empty($_GET['controlador']) || !empty($_POST['controlador'])) { if(isset ($_REQUEST['controlador'])){ $controller = $_REQUEST['controlador'];
}
elseif(isset ($_POST['controlador'])){ $controller = $_POST['controlador'];
}
else{
$controller = $_GET['controlador'];
}
if(isset ($_REQUEST['accion'])){ $action = $_REQUEST['accion'];
}
elseif(isset ($_POST['accion'])){ $action = $_POST['accion'];
}
else{
$action = $_GET['accion'];
}
}
else {
$partes = explode('/', $this->uri); $apps = $config->get('subapp');
for($i=0;$i<count($partes);$i++) { if($partes[$i]!='' && !in_array($partes[$i],$apps )) { $segmentos[] = $partes[$i];
}
else {
$app = $partes[$i];
}
}
if($this->uri!='/') {
if($seg[0]!='admin') {
$url->removeUrlSuffix();
$controller = str_replace(".".$config->get('prefijo'),'',$seg[0]); $action = str_replace(".".$config->get('prefijo'),'',$seg[1]); }
}
else {
$url->removeUrlSuffix();
$path = $this->ruta.'admin'
$controller = str_replace($config->get('prefijo'),'',$seg[1]); $action = str_replace(".".$config->get('prefijo'),'',$seg[2]); }
}
}
else {
$url->removeUrlSuffix();
if($segmentos[1]!='admin') {
$controller = str_replace(".".$config->get('prefijo'),'',$segmentos[1]); }
$action = str_replace(".".$config->get('prefijo'),'',$segmentos[2]); }
}
}
if( empty($controller) ) { $controller = $this->controlador_default.'Controller';
}
else {
$controller = $controller.'Controller';
}
echo $controller."<br/>";
$nombre = explode('Controller',$controller);
$action = $this->accion_default;
}
else {
$action = $action ;
}
echo "accion: $action<br/>";
$config->set('path',$path);
$config->set('path_root',str_replace('\\', '/', PATH_ROOT
).'/');
$controllerLocation = $config->get('path') . '/controladores/' . $nombre[0] . '/'.$controller.'.php';
echo "ruta controlador final: $controllerLocation<br/>";
$vista = $config->get('path') . '/controladores/' . $nombre[0] . '/templates/';
$config->set('vista',$vista);
echo "vista: $vista<br/>";
//valido si existe el archivo sino ejecuta la excepcion
include_once( $controllerLocation );
} else {
error_log("[".date("F j, Y, G:i")."] [Error: E_USER_NOTICE] [Descripcion: No se encuentra el controlador: {$controllerLocation} ]\n", 3,$config->get('root').'/errores.log'); $_SESSION['error'] .= "<p>No se encuentra el controlador: {$controllerLocation}</p>";
}
//valido si existe la clase sino ejecuta la excepcion
$cont = new $controller();
} else {
error_log("[".date("F j, Y, G:i")."] [Error: E_USER_NOTICE] [Descripcion: No se encuentra la clase en el controlador $controller en $controllerLocation ]\n", 3,$config->get('root').'/errores.log'); $_SESSION['error'] .= "<p>No se encuentra la clase en el controlador $controller en $controllerLocation</p>";
}
//valido si existe el método sino ejecuta la excepcion
$cont->$action();
} else {
echo "error: ".$action."<br/>";
//exit();
error_log("[".date("F j, Y, G:i")."] [Error: E_USER_NOTICE] [Descripcion: La Acción $action no existe $action en la clase $controller en $controllerLocation ]\n", 3,$config->get('root').'/errores.log'); $_SESSION['error'] .= "<p>La Acción $action no existe $action en la clase $controller en $controllerLocation</p>";
}
}
private function parseRoutes() {
//creo una instancia de la clase url
$url = Url::singleton();
//valido si la url es distinta a /
if($this->uri != '/') {
echo "1<br/>";
//valido si la url es literal
if (isset($this->routes[$this->uri])) { echo "2<br/>";
$this->uri = $this->routes[$this->uri];
return $this->uri;
}
// recorro el arreglo de reglas router
foreach ($this->routes as $key => $val) {
echo "key: $key - val: $val uri: $uri<br/>";
// Convierto los wild-cards a RegEx
// Valido si existe coincidencia
echo "3<br/>";
// Valido si hay concidencia con las back-reference?
if (strpos($val, '$') !== FALSE AND
strpos($key, '(') !== FALSE) { }
$this->uri = $val;
return $this->uri;
}
//valido si la regla esta dentro de la url
elseif(strpos($this->uri, $key)!== FALSE) { $this->uri = $val;
return $this->uri;
}
}
$this->uri = implode('/', $url->segments); }
}
?>
los "echos" que puse para ver que me devolvía cada variable me imprime esto:
Cita: la
routes
Array
(
)
uri Server : /pbycortos/admin/index.php
Array
(
)
uri: /
explodesegment
Array
(
)
uri:
this->uri: /
indexController
accion: index
ruta controlador final: C:/xampp/htdocs/pbycortos/admin/controladores/index/indexController.php
vista: C:/xampp/htdocs/pbycortos/admin/controladores/index/templates/
si alguien puede encontrar una explicacion porque no anda bien estaré muy agradecido.