Resolución de Problemas
Esta página te ayudará a solucionar problemas comunes que puedes encontrar al usar Flight.
Problemas Comunes
404 No Encontrado o Comportamiento de Ruta Inesperado
Si ves un error 404 No Encontrado (pero juras por tu vida que realmente está ahí y no es un error tipográfico) esto realmente podría ser un problema con que estás devolviendo un valor en el punto final de tu ruta en lugar de simplemente hacer un eco. La razón de esto es intencional pero podría sorprender a algunos desarrolladores.
Flight::route('/hello', function(){
// Esto podría causar un error 404 No Encontrado
return '¡Hola Mundo!';
});
// Lo que probablemente deseas
Flight::route('/hello', function(){
echo '¡Hola Mundo!';
});
La razón de esto es debido a un mecanismo especial incorporado en el enrutador que maneja la salida de retorno como un solo "ir a la siguiente ruta". Puedes ver el comportamiento documentado en la sección Enrutamiento.
Clase No Encontrada (la carga automática no funciona)
Podría haber un par de razones por las que esto no está sucediendo. A continuación se muestran algunos ejemplos, pero asegúrate de revisar también la sección de carga automática.
Nombre de Archivo Incorrecto
Lo más común es que el nombre de la clase no coincida con el nombre del archivo.
Si tienes una clase llamada MiClase
entonces el archivo debería llamarse MiClase.php
. Si tienes una clase llamada MiClase
y el archivo se llama miclase.php
entonces el cargador automático no podrá encontrarlo.
Namespace Incorrecto
Si estás utilizando espacios de nombres (namespaces), entonces el namespace debe coincidir con la estructura de directorios.
// código
// si tu MyController está en el directorio app/controllers y tiene un espacio de nombres
// esto no funcionará.
Flight::route('/hello', 'MyController->hello');
// deberías elegir una de estas opciones
Flight::route('/hello', 'app\controllers\MiControlador->hello');
// o si tienes una declaración use arriba
use app\controllers\MiControlador;
Flight::route('/hello', [ MiControlador::class, 'hello' ]);
// también puede escribirse
Flight::route('/hello', MiControlador::class.'->hello');
// también...
Flight::route('/hello', [ 'app\controllers\MiControlador', 'hello' ]);
path()
no definido
En la aplicación esquelética, esto está definido dentro del archivo config.php
, pero para que tus clases se encuentren, debes asegurarte de que el método path()
esté definido (probablemente en la raíz de tu directorio) antes de intentar usarlo.
// Agregar una ruta al cargador automático
Flight::path(__DIR__.'/../');