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 53, DONDE 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();