Foros del Web » Programando para Internet » PHP »

PHP OO PHP problema con las rutas

Estas en el tema de PHP problema con las rutas en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/03/2017, 21:10
 
Fecha de Ingreso: octubre-2010
Ubicación: Merida
Mensajes: 26
Antigüedad: 13 años, 6 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(); 
  #2 (permalink)  
Antiguo 13/03/2017, 22:39
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: PHP problema con las rutas

Bueno, en teoria es sencillo, solo has de pasarle la ruta correcta para cargar los controladores y modelos. Prueba con la variable $_SERVER['HTTP'].
  #3 (permalink)  
Antiguo 13/03/2017, 23:40
 
Fecha de Ingreso: octubre-2010
Ubicación: Merida
Mensajes: 26
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: PHP problema con las rutas

Cita:
Iniciado por Triby2 Ver Mensaje
Bueno, en teoria es sencillo, solo has de pasarle la ruta correcta para cargar los controladores y modelos. Prueba con la variable $_SERVER['HTTP'].
me indica que esa variable no esta deficina. hice un print_r($_SERVER) para verificar, y no aparece esa
  #4 (permalink)  
Antiguo 14/03/2017, 06:38
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: PHP problema con las rutas

Es que tienes la URL mal escrita

Código PHP:
Ver original
  1. //URL
  2. define("DIR_URL", "http://localhost/rrhh2/public/");
  3. //define("DIR_URL", "http://sitios-en-desarrollo.com/rrhh/public/");

En el localhost tienes rrhh2 y en la que se supone que es el servirdor tienes rrhh
__________________
Diseño Web - Arisman Web
  #5 (permalink)  
Antiguo 14/03/2017, 07:23
 
Fecha de Ingreso: octubre-2010
Ubicación: Merida
Mensajes: 26
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: PHP problema con las rutas

esa constante es para las urls de los .css y los .js, no afecta la ejecucion, de todas maneras ya he cambiado eso y sigue el mismo problema


el codigo que estoy usando lo saque de aqui:


https://www.uno-de-piera.com/desarrolla-tu-propio-mvc-con-php-y-poo/
  #6 (permalink)  
Antiguo 14/03/2017, 07:51
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: PHP problema con las rutas

Cita:
Iniciado por Alejandro8924 Ver Mensaje
me indica que esa variable no esta deficina. hice un print_r($_SERVER) para verificar, y no aparece esa
Bueno, pues en ese print_r() que le hicise, busca el index que te devuelve el dominio, a parte del index HTTP hay otro que también te lo devuelve pero ahora no recuerdo cual es.
  #7 (permalink)  
Antiguo 14/03/2017, 08:35
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: PHP problema con las rutas

Ahora me acordé de algo, cuando hayas encontrado el index adecuado de la variable server, puedes hacer esto para simplificarte un poco el tema.

Código PHP:
/* Esta linea guarda una ruta predefinida par realizar los includes para no tener que escribir de nuevo la ruta. 

Por poner un ejemplo de ruta si todos tus modelos y controladores están dentro de la carpeta "App".*/
set_include_path(get_include_path() . PATH_SEPARATOR '../App/');

/* Ahora solo te falta hacer include sin tener que añadir nada más como ruta*/
include 'Models/Usuarios.php';
include 
'Controllers/UsuariosController.php'
Al tener una ruta predeterminada para los archivos dentro de App, cada include php lo interpreta como:
Código PHP:
include '../App/Models/Usuarios.php';
include 
'../App/Controllers/UsuariosController.php'
  #8 (permalink)  
Antiguo 15/03/2017, 12:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: PHP problema con las rutas

Antes de la línea donde obtienes el error pon esto:

Código PHP:
Ver original
  1. var_dump(SELF::NAMESPACE_CONTROLLERS, $this->_controller);
  2.  
  3. // Aparte, actualiza esto:
  4. const NAMESPACE_CONTROLLERS = "\\App\\Controllers\\";

Recuerda que la diagonal invertida es un caracter de escape y, para representarla en una cadena necesitas colocarla dos veces.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: linux, mvc, rutas, xampp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:59.