Un caso de uso práctico de clases anónimas en PHP

Un caso de uso práctico de clases anónimas en PHP — Amit Merchant — Un blog sobre PHP, JavaScript y más

Las clases anónimas en PHP le permiten crear una clase sobre la marcha sin tener que definir una nueva clase. Son particularmente útiles cuando desea crear una clase que solo se usa una vez.

En mi artículo anterior, revisamos un memoize función auxiliar que utiliza clases anónimas para almacenar en caché el resultado de una llamada de función.

function memoize($target) 
{
    static $memo = new WeakMap;

    return new class ($target, $memo) {
        function __construct(
            protected $target,
            protected &$memo,
        ) {}

        function __call($method, $params)
        {
            $this->memo[$this->target] ??= [];

            $signature = $method . crc32(json_encode($params));

            return $this->memo[$this->target][$signature]
               ??= $this->target->$method(...$params);
        }
    };
}

Aviso, la función usa PHP __call() método mágico para llamar al método en el objeto de destino para su beneficio. Y como solo puedes usar el __call() método mágico en una clase, entra en juego el uso de clases anónimas.

Imagínese si tuviera que implementar la misma lógica usando clases regulares. Tendría que definir una clase y luego implementar el __call() método mágico en él.

Aquí hay una clase equivalente que hace lo mismo que la clase anónima anterior.

class Memoize
{
    function __construct(
        protected $target,
        protected &$memo,
    ) {}

    public function __call($method, $params)
    {
        $this->memo[$this->target] ??= [];

        $signature = $method . crc32(json_encode($params));

        return $this->memo[$this->target][$signature]
           ??= $this->target->$method(...$params);
    }
}

Como puede ver, esta ya no es una función de ayuda, simplemente puede entrar un momento y empezar a usarlo. Deberá definir una clase, luego instanciarla y luego llamar al método en ella. Eso es mucho código repetitivo para una función de ayuda simple y el maniobrabilidad está perdido.

Las clases anónimas resuelven problemas como este. Le permiten crear una clase sobre la marcha y usarla a su favor. Y eso es exactamente lo que memoize() la función lo hace.

Básicamente, cuando tenemos un caso de uso en el que queremos usar la funcionalidad de clase pero no queremos definir una nueva clase, las clases anónimas son el camino a seguir.

Si quieres conocer otros artículos parecidos a Un caso de uso práctico de clases anónimas en PHP puedes visitar la categoría Código.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas