Saltar al contenido principal

Referencia de Clases PHP

Referencia completa de todas las clases PHP en MIH. Incluye firmas de métodos, descripciones de parámetros, tipos de retorno y ejemplos de uso.


\local_integrationhub\mih

Archivo: classes/mih.php Patrón: Facade / Singleton

El punto de entrada principal. Todas las integraciones salientes pasan por esta clase.

Métodos

request(string $servicename, string $endpoint, array $payload, string $method): mih_response

Método estático de conveniencia para realizar una petición.

$response = \local_integrationhub\mih::request('mi-servicio', '/api', ['id'=>1], 'POST');

send(string $servicename): mih_request

Inicia un constructor de peticiones fluido.

$response = \local_integrationhub\mih::send('mi-servicio')
->to('/api')
->with(['id'=>1])
->dispatch();

instance(): self

Devuelve la instancia singleton (uso interno).

$mih = \local_integrationhub\mih::instance();

request(...)

(Ver método estático arriba)

Lanza: \moodle_exception con claves: service_not_found, service_disabled, circuit_open


\local_integrationhub\mih_response

Patrón: Value Object Inmutable

Encapsula el resultado de cada petición MIH.

Propiedades

PropiedadTipoDescripción
$successbooltrue si la petición se completó exitosamente
$httpstatusint|nullCódigo de respuesta HTTP. null para AMQP.
$bodystring|nullCuerpo de respuesta crudo
$errorstring|nullMensaje de error. null en éxito.
$latencymsintTiempo total en milisegundos (incluyendo reintentos)
$attemptsintTotal de intentos realizados

is_ok(): bool

Devuelve true si $success === true.

json(bool $assoc = true): mixed

Decodifica $body como JSON. true = array, false = stdClass.


\local_integrationhub\service\registry

Patrón: Clase utilitaria estática

Métodos Principales

MétodoRetornoDescripción
get_service(string $name)\stdClass|falseObtiene servicio por slug
get_service_by_id(int $id)\stdClassObtiene servicio por ID (lanza si no existe)
get_all_services()arrayTodos los servicios, indexados por ID
create_service(\stdClass $data)intCrea servicio y su circuit breaker. Devuelve ID.
update_service(int $id, \stdClass $data)boolActualiza un servicio existente
delete_service(int $id)boolElimina servicio y todos sus registros asociados

\local_integrationhub\service\circuit_breaker

Métodos Principales

MétodoRetornoDescripción
from_service(\stdClass $service)selfFactory. Crea instancia desde registro de servicio.
is_available()booltrue si las peticiones deben pasar
record_success()voidRegistra éxito. Resetea contador. Cierra circuito si era HALFOPEN.
record_failure()voidRegistra fallo. Incrementa contador. Abre circuito si alcanza umbral.
get_state()\stdClassDevuelve el registro DB crudo del circuit breaker
get_state_label()stringEtiqueta legible: 'CLOSED', 'OPEN', o 'HALFOPEN'
reset()voidFuerza el circuito a CLOSED y resetea el contador

\local_integrationhub\service\retry_policy

Métodos Principales

MétodoRetornoDescripción
from_service(\stdClass $service)selfFactory. Crea política desde registro de servicio.
execute(callable $operation)mixedEjecuta $operation con reintentos. El callable recibe el número de intento (base 1).
get_total_attempts()intTotal de intentos en la última llamada a execute()

\local_integrationhub\transport\contract

Patrón: Interfaz

Todos los drivers de transporte deben implementar:

public function execute(
\stdClass $service,
string $endpoint,
array $payload,
string $method = ''
): array;

Retorna: Array con claves: success, body, httpstatus, error, latencyms, attempts


\local_integrationhub\event\observer

handle_event(\core\event\base $event): void

Método estático. Llamado por el sistema de eventos de Moodle™ para cada evento. Realiza búsqueda de reglas, deduplicación y encolado de tareas adhoc.

// Registrado en db/events.php — no se llama directamente

\local_integrationhub\task\dispatch_event_task

Extiende: \core\task\adhoc_task

execute(): void

Procesa un evento encolado: carga la regla, interpola el template, llama a la API MIH, maneja DLQ en fallo permanente.


\local_integrationhub\task\consume_responses_task

Extiende: \core\task\scheduled_task

execute(): void

Se conecta a cada servicio AMQP que tiene una response_queue configurada y consume los mensajes pendientes.


\local_integrationhub\transport\amqp_helper

create_connection(string $url, int $timeout = 5): AMQPStreamConnection

Parsea una URL AMQP y crea una conexión. Soporta tanto amqp:// como amqps://.

ensure_queue($channel, string $queue): void

Declara una cola durable si no existe ya.