---
title: "Uso del Dispatcher"
description: "Uso completo del Dispatcher"
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-10-08"
last_update: "2026-10-08"
time_minutes: 2
draft: false
unlisted: false
url: "https://core.libredte.cl/docs/dispatcher/uso"
---

# Uso del Dispatcher

Repasa en detalle cómo arrancar el dispatcher, construir una
solicitud y leer su resultado — el ejemplo de la introducción,
explicado paso a paso.

## Arrancar el dispatcher

`Bootstrap::boot()` es el único punto de entrada público del
paquete. Todo el resto del cableado (Deserializers, la cadena
`DirectDispatcher` → `TypedDispatcher` → `SafeDispatcher` de
`derafu/backbone-dispatcher`) está declarado en su
`config/services.yaml`, no en PHP.

```php
use libredte\lib\CoreDispatcher\Bootstrap;

// El entorno puede ser 'prod' (default), 'dev' o 'test'.
$dispatcher = Bootstrap::boot(environment: 'prod', debug: false);
```

## Construir la solicitud

Con los 4 identificadores por separado:

```php
use Derafu\BackboneDispatcher\ValueObject\OperationRequest;

$request = new OperationRequest(
    'billing',
    'identifier',
    'caf_loader',
    'load',
    ['xml' => base64_encode($cafXml)],
);
```

O con el identificador `"package.component.worker:operation"` como
un solo string — la forma natural para quien llama desde el otro
lado de un límite de proceso o lenguaje, como el
[Bridge Python](https://www.derafu.dev/docs/bridge-python):

```php
$request = OperationRequest::fromId(
    'billing.identifier.caf_loader::load',
    ['xml' => base64_encode($cafXml)],
);
```

> [!NOTE] Nota
>
> Revisa [Funcionalidades](https://www.derafu.dev/docs/lib/funcionalidades) de la
> biblioteca PHP para ver qué paquetes, componentes y workers (y por
> lo tanto qué operaciones) están disponibles.

## Despachar y leer el resultado

`dispatch()` nunca lanza excepciones: siempre revisa `isSuccess()`
antes de usar el resultado.

```php
$result = $dispatcher->dispatch($request);

if ($result->isSuccess()) {
    // Ya serializado (array), listo para cruzar un límite de
    // proceso o lenguaje.
    $caf = $result->getValue();
} else {
    // ProblemDetail (RFC 7807-like).
    $problem = $result->getProblem();
}
```

## Parámetros anidados

Los parámetros que corresponden a objetos (CAF, certificados,
emisor, receptor, mandatario, etc.) se pueden pasar como arreglos: el
dispatcher los deserializa automáticamente al tipo esperado por la
operación. Revisa [Deserializadores](https://www.derafu.dev/docs/dispatcher/deserializadores)
para el detalle de qué interfaces están cubiertas.



---
Última actualización el 08/10/2026

