Download the PHP package rguezque/katya-router without Composer

On this page you can find all versions of the php package rguezque/katya-router. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package katya-router

Katya

A lightweight PHP router

Tabla de contenidos

Install

Desde la terminal en la raíz del proyecto:

Configuration

Para servidor Apache, en el directorio del proyecto crea y edita un archivo .htaccess con lo siguiente:

Para Nginx edita el archivo de configuración de la siguiente forma:

Para prueba desde el servidor inbuilt de PHP, dentro del directorio del proyecto ejecuta en la terminal:

Y abre en el navegador web la dirección http://localhost:80

Autoloader

Desde la terminal, ubícate dentro del directorio del proyecto y ejecuta:

Routing

Cada ruta se define con el método Katya::route, que recibe 3 argumentos, el método de petición (solo son soportados GET, POST, PUT, PATCH y DELETE), la ruta y el controlador a ejecutar para dicha ruta. Los controladores siempre reciben 2 argumentos, un objeto Request (Ver Response). El primero contiene los métodos necesarios para manejar una petición y el segundo contiene métodos que permiten devolver una respuesta.

Para iniciar el router se invoca el método Katya::run y se le envía un objeto Request.

Si el router se aloja en un subdirectorio, este se puede especificar en el array de opciones al crear la instancia del router. Así mismo, se puede definir el directorio default donde se buscarán los archivos al renderizar una plantilla.

[!TIP] El router devuelve dos posibles excepciones; RouteNotFoundException cuando no se encuentra una ruta y UnsupportedRequestMethodException cuando un método de petición no está soportado por el router. Utiliza un try-catch para atraparlas y manejar el Response apropiado como se ve en el ejemplo.

Shortcuts

Los atajos Katya::get, Katya::post, Katya::put, Katya::patch y Katya::delete sirven respectivamente para agregar rutas de tipo GET, POST, PUT, PATCH y DELETE al router.

Controllers

Los controladores pueden ser: una función anónima, un método estático o un método de un objeto.

Routes group

Para crear grupos de rutas bajo un mismo prefijo se utiliza Katya::group; recibe 2 argumentos, el prefijo de ruta y una función anónima que recibe un objeto Group con el cual se definen las rutas del grupo.

Wildcards

Los wildcards son parámetros definidos en la ruta. El router busca las coincidencias de acuerdo a la petición y los envía como argumentos al controlador de ruta a través del objeto Request, estos argumentos son recuperados con el método Request::getParams que devuelve por default un objeto Parameters donde cada clave se corresponde con el mismo nombre de los wildcards. El argumento por default de esté método es Request::PARAMS_ASSOC el cual indica que el array de parámetros tiene índices nombrados correspondientes a los wildcards y no numéricos.

El objeto Parameters tiene los siguientes métodos:

Si los wildcards fueron definidos como expresiones regulares envía el argumento Request::PARAMS_NUM el cual devuelve un array lineal con los valores de las coincidencias encontradas.

[!IMPORTANT] Evita mezclar parámetros nombrados y expresiones regulares en la misma definición de una ruta, pues no podrás recuperar por nombre los que hayan sido definidos como regex. En todo caso si esto sucede, envía el argumento Request::PARAMS_BOTH para recuperar un array con todos los parámetros en el orden que hayan sido definidos en la ruta.

Views

Las vistas son el medio por el cual el router devuelve y renderiza un objeto Response con contenido HTML en el navegador. La única configuración que se necesita es definir el directorio donde estarán alojadas las plantillas.

La configuración inicial de View puede ser sobrescrita con el método View::setViewsPath.

[!NOTE] Si previamente se ha definido el directorio de plantillas en la configuración inicial en el constructor del router no es necesario especificarlo en el constructor de la clase View, aunque si se define un directorio aquí, este tendrá prioridad sobre la configuración inicial.

Set template

El método que permite definir una plantilla principal es View::setTemplate , este puede recibir uno o dos parámetros; el primer parámetro es el nombre del archivo de plantilla y el segundo es un array asociativo con argumentos que se envían a la plantilla.

Adding arguments

Una forma alternativa de enviar argumentos a una vista es a través de los métodos View::addArgument y View::addArguments. El primero recibe dos parámetros (nombre y valor) y el segundo un array asociativo. Estos parámetros serán automáticamente incluidos al invocar el método View::render, por lo cual deben ser declarados antes de renderizar (Ver Render).

Extending the template

Para extender una plantilla se utiliza el método View::extendWith, este método recibe tres parámetros; el nombre de la plantilla que extenderá a la plantilla principal, un alias único con el que se incluirá en la plantilla principal y opcionalmente un array de argumentos que se envian a la actual plantilla que está extendiendo a la principal.

Recibe los parámetros enviados en $data (según el ejemplo del bloque de código de arriba)

Imprime en pantalla el contenido de menu.php guardado previamente con el alias 'menu_lateral'.

Render view

El método View::render se invoca siempre al final y devuelve lo contenido en el actual buffer para ser recuperado en una variable y enviado en un Response.

[!NOTE] Un atajo para renderizar plantillas de manera simple es a través del método Response::render (Ver Response)

Request

Los métodos de la clase Request que empiezan con get devuelven un objeto Parameters con excepción de Request::getParams que puede variar.

Response

Métodos de la clase Response.

Session

La clase Session sirve para la creación de sesiones y la administración de variables de $_SESSION que son almacenadas en un namespace privado del router. Se inicializa o selecciona una colección de variables de sesión con el método estático Session::create el cual devuelve un singleton de la clase. Los métodos disponibles son:

[!NOTE] Session::start se invoca automáticamente en cada llamado del resto de métodos pero se deja como acceso público.

Services

La clase Services sirve para registrar servicios que se utilizarán en todo el proyecto. Con el método Services::register agregamos un servicio, este recibe 2 parámetros, un nombre y una función anónima. Para quitar un servicio Services::unregister recibe el nombre del servicio (o servicios, separados por coma) a eliminar.

Para asignarlos al router se envía el objeto Services a través del método Katya::setServices, a partir de aquí, cada controlador recibirá como tercer argumento la instancia de Services. Un servicio es invocado como si fuera un método más de la clase o bien como si fuera un atributo en contexto de objeto.

Opcionalmente se puede seleccionar que servicios específicamente serán utilizados en determinada ruta o grupo de rutas con Route::useServices el cual recibe los nombres de los servicios registrados previamente, separados por comas.

Para verificar si un servicio existe se usa Services::has (se envía como argumento el nombre del servicio) y Services::names devuelve un array con los nombres de todos los servicios disponibles.

Variables

Asigna variables globales dentro de la aplicación con Katya::setVariables que recibe como parámetro un objeto Variables.

Con Variables::setVar se crea una variable, recibe como parámetros el nombre de la variable y su valor.

Recupera una variable con el método Variables::getVar, recibe como parámetros el nombre de la variable y un valor default en caso de que la variable llamada no exista; este último parámetro es opcional y si no se declara devolverá un valor null por default.

Para verificar si una variable existe se utiliza el método Variables::hasVar que devolverá true si la variable existe o false en caso contrario.

[!NOTE] Todos los nombres de variables son normalizados a minúsculas y son enviadas siempre como último argumento en cada controlador, solo si se han definido y asignado con Katya::setVariables.

DB Connection

La clase DbConnection proporciona el medio para crear una conexión singleton con MySQL a través del driver PDO o la clase mysqli. El método estático DbConnection::getConnection recibe los parámetros de conexión y devuelve un objeto con la conexión creada dependiendo del parámetro driver donde se define si se utilizara por default MySQL con PDO o con mysqli.

Connecting using an URL

Otra alternativa es usar una database URL como parámetro de conexión, a través del método estático DbConnection::dsnParser; este recibe una URL y la procesa para ser enviada a DbConnection::getConnection de la siguiente forma:

Auto connect

El método estático DbConnection::autoConnect realiza una conexión a MySQL tomando automáticamente los parámetros definidos en un archivo .env.

El archivo .env debería verse mas o menos así:

[!NOTE] Se debe usar alguna librería que permita procesar la variables almacenadas en .env y cargarlas en las variables $_ENV. La más usual es vlucas/phpdotenv.

Middleware

El middleware Route::before ejecuta una acción previa al controlador de una ruta.

Route::before Recibe un objeto callable (función, método de objeto o método estático) donde se definen las acciones a ejecutar, este objeto a su vez recibe los mismos parámetros que los controladores: las instancias de Request, Response y si se definieron servicios, la instancia de Services. Si un valor es devuelto este se pasa al controlador a través del objeto Request y se recupera con la clave @middleware_data en el objeto devuelto por Request::getParams.

Tanto las rutas como los grupos de rutas pueden tener un middleware. Si se define en un grupo, todas las rutas heredarán la misma acción previa, pero si se define a una ruta individual esta tendrá preferencia sobre el middleware del grupo.

CORS

(Cross-Origin Resource Sharing). Esta configuración se define a través de un objeto CorsConfig en el cual se agregan los origenes, los métodos de petición permitidos para cada origen así como los encabezados http aceptados, el tiempo en segundos para la cache de las preflight requests y soporte para credenciales de acceso.

Los métodos y configuración http son opcionales; por default para todos los origenes todos los métodos son aceptados y la configuración default es la siguiente:

Asigna la configuración de CORS con el método Katya::setCors y automaticamente se ejecutará al correr el router:

Environment Management

El ambiente de desarrollo se carga automaticamente desde la variable APP_ENV del archivo .env; en caso de no ser definida se tomará por default el modo production. El valor posible solo puede ser development o production.

Especifica el directorio (obligatorio) donde se guardará el registro de errores. Todos los errores que ocurran en ambos ambientes de desarrollo se volcarán en un archivo php_errors.log.

Usa Environment::getLogPath para recuperar la ruta completa del archivo de registro de errores.

[!NOTE] La salida en pantalla del registro de errores se muestra en formato JSON para una mejor legibilidad.


All versions of katya-router with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2.12
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package rguezque/katya-router contains the following files

Loading the files please wait ....