Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/03/2017, 21:10
Alejandro8924
 
Fecha de Ingreso: octubre-2010
Ubicación: Merida
Mensajes: 26
Antigüedad: 13 años, 7 meses
Puntos: 0
PHP problema con las rutas

Buenas.

Tengo un problema con las rutas (creo) ya que estoy trabajando con xampp en Windows y el proyecto me funciona bien, pero al momento del subirlo a un hosting, me marca un error

Fatal error: Class '\App\Controllers\Home' not found in /home/liftechc/public_html/rrhh/Core/App.php on line 53


El archivo App.php contiene este fragmento de código:

Código PHP:
/**
* @var
*/
const NAMESPACE_CONTROLLERS "\App\Controllers\\";

/**
 * @var
 */
const CONTROLLERS_PATH "../App/controllers/";

/**
 * [__construct description]
 */
public function __construct() {
    
//obtenemos la url parseada
    
$url $this->parseUrl();

    
//comprobamos que exista el archivo en el directorio controllers
    
if(file_exists(self::CONTROLLERS_PATH ucfirst($url[0]) . ".php")) {
        
//nombre del archivo a llamar
        
$this->_controller ucfirst($url[0]);
        
//eliminamos el controlador de url, así sólo nos quedaran los parámetros del método
        
unset($url[0]);
    } else {
        include 
APPPATH "/views/errors/404.php";
        exit;
    }

    
//obtenemos la clase con su espacio de nombres
    
$fullClass self::NAMESPACE_CONTROLLERS $this->_controller;

    
//asociamos la instancia a $this->_controller
    
$this->_controller = new $fullClass;                    <--- ESTA ES LA LINEA 53DONDE ME DA EL ERROR!

    
//si existe el segundo segmento comprobamos que el método exista en esa clase
    
if(isset($url[1])) {

        
//aquí tenemos el método
        
$this->_method $url[1];
        if(
method_exists($this->_controller$url[1])) {
            
//eliminamos el método de url, así sólo nos quedaran los parámetros del método
            
unset($url[1]);
        } else {
            throw new 
Exception("Error Processing Method {$this->_method}"1);
        }
    }
    
//asociamos el resto de segmentos a $this->_params para pasarlos al método llamado, por defecto será un array vacío
    
$this->_params $url array_values($url) : [];


El archivo index.php contiene este código:

Código PHP:
//Borrar para produccion
error_reporting(E_ALL);
ini_set('display_errors'1);

//SESION
session_start();

//URL
define("DIR_URL""http://localhost/rrhh2/public/");
//define("DIR_URL", "http://sitios-en-desarrollo.com/rrhh/public/");

//directorio del proyecto
define("PROJECTPATH"dirname(__DIR__));

//directorio app
define("APPPATH"PROJECTPATH '/App');

//autoload con namespaces
function autoload_classes($class_name) {
    
$filename PROJECTPATH '/' str_replace('\\''/'$class_name) . '.php';
    if(
is_file($filename)) {
        include_once 
$filename;
    }
}
//registramos el autoload autoload_classes
spl_autoload_register('autoload_classes');

//instanciamos la app
$app = new CoreApp;

//lanzamos la app
$app->render();