Download the PHP package chrispo/routex-php without Composer

On this page you can find all versions of the php package chrispo/routex-php. 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 routex-php

routex-php

PHP Pest

Un enrutador HTTP ligero para PHP 8.3+ con una API inspirada en Express.js.

Ejemplos


Características

Instalación

Requisitos: PHP 8.3+

Inicio rápido

Levantar el servidor:

Estructura de carpetas recomendada

public/index.php queda limpio:

src/routes.php concentra todas las rutas:

Rutas

Métodos HTTP

Parámetros dinámicos

Usa :nombre para capturar segmentos de la URL:

Query string

Grupos de rutas

Agrupa rutas bajo un prefijo común. Todos los sub-handlers heredan el prefijo:

Middleware

El middleware sigue el patrón Chain of Responsibility: cada pieza puede modificar la petición/respuesta, llamar a $next para continuar la cadena, o cortarla devolviendo una respuesta directa.

Crear un middleware

Implementa MiddlewareInterface:

Middleware global

Se aplica a todas las rutas del router:

Middleware por ruta

Solo se aplica a la ruta específica. Se encadena con ->middleware():

Middleware de grupo

Dentro de group(), use() aplica solo a las rutas del grupo:

Orden de ejecución

El pipeline respeta el orden de registro: el primer middleware registrado es el primero en ejecutarse y el último en terminar (outer → inner):

Request & Response

Request — métodos disponibles

Método Descripción Ejemplo
param('key') Parámetro dinámico de ruta $req->param('id') → '42'
query('key', $default) Valor de query string $req->query('page', '1')
body('key', $default) Campo del body JSON o POST $req->body('email')
body() Todo el body como array $req->body()
header('Name') Cabecera HTTP $req->header('Authorization')
all() Body + query + params fusionados $req->all()
rawBody() Body sin parsear (webhooks) $req->rawBody()
ip() IP del cliente $req->ip()
isJson() Content-Type es application/json $req->isJson()
isXhr() Petición AJAX $req->isXhr()
getMethod() Método HTTP $req->getMethod() → 'GET'
getPath() Path sin query string $req->getPath() → '/users/42'

Response — métodos disponibles

Método Descripción Ejemplo
json($data) Serializa a JSON y envía $res->json(['id' => 1])
send($body) Envía texto plano $res->send('pong')
html($content) Envía HTML $res->html('<h1>Hello</h1>')
redirect($url, $code) Redirige (302 por defecto) $res->redirect('/login')
status($code) Establece el código HTTP $res->status(201)->json(...)
header($name, $value) Añade cabecera HTTP $res->header('X-Token', 'abc')
withHeaders($array) Añade múltiples cabeceras $res->withHeaders([...])

Los métodos status() y header() son fluent (retornan $this) y pueden encadenarse:

Manejo de errores

404 — ruta no encontrada

405 — método no permitido

La excepción incluye los métodos permitidos para esa ruta:

Errores globales

Captura cualquier excepción no controlada lanzada dentro de un handler:

Ejemplos completos

El archivo index.php en la raíz del repositorio contiene ejemplos listos para ejecutar de todo lo anterior:

Sección Qué demuestra
GET / Respuesta JSON básica
GET /ping Healthcheck con texto plano
GET /users Lista con paginación via query string
POST /users Creación con validación de body JSON
GET /users/:id Parámetro dinámico
PUT /users/:id Reemplazar recurso
PATCH /users/:id Actualización parcial
DELETE /users/:id Eliminar recurso (204 sin body)
GET /api/v1/products Grupo con prefijo /api/v1
GET /posts/:year/:month/:slug Tres parámetros en una sola ruta
GET /admin/dashboard Grupo protegido con AuthMiddleware
GET /reports Middleware por ruta individual
GET /go Redirección 301
Custom 404 / 405 / error Handlers personalizados de error

Para ejecutarlo:

Tests

El proyecto incluye 91 tests con Pest:

Benchmarks

Mediciones de rendimiento con PHPBench:

Resultados de referencia (PHP 8.5, sin opcache):

Benchmark Tiempo Descripción
Ruta estática ~2 µs Caso base
Ruta dinámica ~2.5 µs +25% por regex
50 rutas registradas ~17 µs O(n) lineal
Con 3 middlewares ~3 µs +45% overhead pipeline
Sin middlewares ~2 µs Baseline
Ruta no encontrada ~1.5 µs Loop + excepción

All versions of routex-php with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
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 chrispo/routex-php contains the following files

Loading the files please wait ...