PHPackages                             dlunire/dlroute - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dlunire/dlroute

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dlunire/dlroute
===============

Sistema de rutas simple, eficiente y flexible. Úsalo con DLUnire o intégralo fácilmente en cualquier proyecto PHP

v1.0.5(2mo ago)0251↓62.5%1MITPHP

Since Apr 8Pushed 2mo agoCompare

[ Source](https://github.com/dlunire/dlroute)[ Packagist](https://packagist.org/packages/dlunire/dlroute)[ RSS](/packages/dlunire-dlroute/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (7)Used By (1)

DLRoute – PHP Routing System
============================

[](#dlroute--php-routing-system)

Project Documentation
---------------------

[](#project-documentation)

This repository contains documentation for the main components of the project, including HTTP request handling, routing, and resource management.

---

Table of Contents
-----------------

[](#table-of-contents)

### Request

[](#request)

LanguageDocumentationEnglish[Request-EN](docs/Request/Request-EN.md)Spanish[Request-ES](docs/Request/Request-ES.md)### Router

[](#router)

LanguageDocumentationEnglish[Router-EN](docs/Router/Router-EN.md)Spanish[Router-ES](docs/Router/Router-ES.md)### Resource Manager

[](#resource-manager)

LanguageDocumentationEnglish / Spanish[ResourceManager](docs/ResourceManager.md)---

> Each document provides detailed explanations, examples, and best practices for using the respective classes and methods in your PHP application.

**DLRoute** is a simple, flexible, and efficient routing system designed for web applications in PHP. It provides advanced support for data filtering, parameter types, and clean integration with your application.

Since version **v1.0.4**, DLRoute not only manages routes: it **exposes and normalizes the full HTTP execution context**, even in non-deterministic environments.

---

🌐 Descripción en Español
------------------------

[](#-descripción-en-español)

**DLRoute** es un sistema de enrutamiento diseñado para facilitar la gestión de rutas y URLs en aplicaciones web PHP, manteniendo bajo acoplamiento con el entorno de ejecución.

Permite filtrar parámetros por tipo o expresiones regulares, admite contenido JSON enviado directamente en el cuerpo (`body`) de la petición y, desde la versión **v1.0.4**, proporciona información detallada y coherente del **host, esquema, puertos e IP**, incluso detrás de *reverse proxies*, túneles o en ejecución por CLI.

---

🆕 Novedades destacadas (v1.0.4)
-------------------------------

[](#-novedades-destacadas-v104)

### Resolución robusta del contexto del servidor

[](#resolución-robusta-del-contexto-del-servidor)

DLRoute ahora determina de forma explícita y modular:

- Dominio y hostname real o impuesto.
- Esquema HTTP (`http` / `https`) de forma determinista.
- Dirección IP del cliente desde múltiples fuentes.
- Diferenciación entre:

    - Puerto local (donde corre el script).
    - Puerto remoto (expuesto al cliente).
- Detección de ejecución:

    - Local
    - Detrás de reverse proxy
    - Túneles (por ejemplo, ngrok)
    - CLI (tests automatizados)

Todo esto se implementa mediante **traits especializados**, no lógica implícita.

---

✅ Características
-----------------

[](#-características)

- Definición de rutas simples y complejas.
- Manejo de métodos HTTP: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`.
- Soporte para parámetros dinámicos y tipados.
- Validación por tipo o expresión regular.
- Uso de controladores o funciones anónimas (*callbacks*).
- Integración flexible con proyectos PHP nativos o con el framework **DLUnire**.
- Exposición del contexto completo de ejecución HTTP (v1.0.4).

---

🧠 Contexto del servidor (v1.0.4)
--------------------------------

[](#-contexto-del-servidor-v104)

DLRoute puede exponer información como:

```
{
  "dir": "/subdir",
  "route": "/ruta/registrada",
  "uri": "/subdir/ruta/registrada",
  "base_url": "https://example.com/subdir",
  "domain": "example.com",
  "hostname": "example.com:443",
  "is_https": true,
  "IP": "{ip-del-cliente-http}",
  "port": 443,
  "local_port": 4000,
  "method": "GET",
  "proxy": true
}
```

Esta información es consistente incluso en entornos mal configurados o no estándar.

---

🌐 Control explícito del host externo
------------------------------------

[](#-control-explícito-del-host-externo)

Para escenarios específicos (tests, simulaciones, entornos incompletos), DLRoute permite imponer un host externo:

```
DLServer::set_external_host('example.test', false);
```

- Si el segundo parámetro es `false`, el host se usa solo si no se pudo detectar uno válido.
- Si es `true`, el host impuesto será el único permitido.

Se puede configurar:

- Globalmente (al inicio de la aplicación).
- De forma puntual para contextos específicos.

---

💾 Instalación
-------------

[](#-instalación)

```
composer require dlunire/dlroute
```

Ubica tu archivo principal en una carpeta pública (`public/`, `html_public`, etc.). Define tus rutas y ejecuta:

```
DLRoute::execute();
```

---

✏️ Sintaxis de rutas
--------------------

[](#️-sintaxis-de-rutas)

```
DLRoute::get(string $uri, callable|array|string $controller): DLParamValueType;
DLRoute::post(string $uri, callable|array|string $controller): DLParamValueType;
DLRoute::put(string $uri, callable|array|string $controller): DLParamValueType;
DLRoute::patch(string $uri, callable|array|string $controller): DLParamValueType;
DLRoute::delete(string $uri, callable|array|string $controller): DLParamValueType;
```

---

📌 Ejemplos de uso
-----------------

[](#-ejemplos-de-uso)

### Rutas básicas con controlador

[](#rutas-básicas-con-controlador)

```
use DLRoute\Requests\DLRoute as Route;
use DLRoute\Test\TestController;

Route::get('/ruta', [TestController::class, 'method']);
Route::get('/ruta/{parametro}', [TestController::class, 'method']);
```

### Definición del controlador

[](#definición-del-controlador)

```
final class TestController extends Controller {
    public function tu_metodo(object $params): object|string {
        return $params;
    }
}
```

### Rutas con tipos

[](#rutas-con-tipos)

```
Route::get('/ruta/{id}', [TestController::class, 'method'])
  ->filter_by_type(['id' => 'numeric']);
```

### Con expresión regular

[](#con-expresión-regular)

```
->filter_by_type(['token' => '/[a-f0-9]+/']);
```

### Tipos admitidos

[](#tipos-admitidos)

```
integer, float, numeric, boolean, string, email, uuid

```

### Uso de callbacks

[](#uso-de-callbacks)

```
Route::get('/ruta/{parametro}', function (object $params) {
    return $params;
});
```

---

🌍 English Description
---------------------

[](#-english-description)

**DLRoute** is a PHP routing system designed to simplify URL management while remaining resilient to non-standard execution environments.

Since **v1.0.4**, DLRoute exposes a normalized and deterministic HTTP context, even when running behind reverse proxies, tunnels, or in CLI-based automated tests.

---

🆕 Highlights (v1.0.4)
---------------------

[](#-highlights-v104)

- Deterministic HTTP scheme resolution.
- Explicit domain and hostname detection or enforcement.
- Local vs remote port differentiation.
- Multi-source client IP detection.
- CLI-safe defaults for automated testing.
- Modular design based on specialized traits.

---

✅ Features
----------

[](#-features)

- Simple and complex route definitions.
- Supports `GET`, `POST`, `PUT`, `PATCH`, `DELETE`.
- Dynamic route parameters with type filtering.
- Regular expression-based parameter validation.
- Supports controllers and callbacks.
- Seamless integration with native PHP or **DLUnire**.
- Full execution context exposure (v1.0.4).

---

📌 Callback example
------------------

[](#-callback-example)

```
Route::get('/info', function (object $params) {
    return ['status' => 'ok'];
});
```

> If an array or object is returned, DLRoute automatically sends a JSON response.

```

```

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance84

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~64 days

Recently: every ~80 days

Total

6

Last Release

81d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/aefd45995b7620e526755e4e1fec7e5c632b7dcea6a71cd0cb2e806f07708087?d=identicon)[dlunire](/maintainers/dlunire)

---

Top Contributors

[![dlunire](https://avatars.githubusercontent.com/u/28575628?v=4)](https://github.com/dlunire "dlunire (16 commits)")

### Embed Badge

![Health badge](/badges/dlunire-dlroute/health.svg)

```
[![Health](https://phpackages.com/badges/dlunire-dlroute/health.svg)](https://phpackages.com/packages/dlunire-dlroute)
```

###  Alternatives

[codewithkyrian/transformers

State-of-the-art Machine Learning for PHP. Run Transformers in PHP

749231.8k5](/packages/codewithkyrian-transformers)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
