Tipando las respuestas de APIs de terceros en PHP

Una de las cosas que más disfruto últimamente cuando programo en PHP es tipar las respuestas APIs de terceros. ¡Veamos por qué!

Tipando las respuestas de APIs de terceros en PHP
Photo by lilzidesigns / Unsplash

Una de las cosas que más disfruto últimamente cuando programo en PHP es tipar las respuestas APIs. Me da mucha seguridad.

En mi aplicación de Laravel, creo una carpeta DTO y dentro creo las posibles respuestas de las APIs. Por ejemplo:

<?php

namespace App\DTO;

readonly class SingleSSO {
    public function __construct(
        public string $result,
        public string $accessToken,
        public string $redirectUrl,
    ) {

    }

    public static function make(array $from): static
    {
        return new static(
            $from['result'],
            $from['access_token'],
            $from['redirect_url'],
        );
    }
}

Luego, cuando solicito los resultados a la API, hago algo así:

$client = new MyApi();
$response = $client->sso(); // returns an array
$response = SingleSSO::make($response);

Tras hacer esto, todos los usos de SingleSSO en mi código están tipados, lo que trae muchas ventajas:

  • Autocompletado del editor: Este es un gran añadido a la funcionalidad de los editores, ya que nos va a ahorrar posibles errores en el futuro al escribir mal algún índice de un array
  • Código más reusable y depurable: Podemos añadir métodos al DTO para hacer pequeños cálculos, así como añadir breakpoints y logs.

Además, si usas Laravel una de las librerías que podemos usar para hacer de los DTOs algo aún mejor es Laravel Data, de nuestros amigos de Spatie.