La verdad es que esta nueva funcionalidad me deja frío, y es añadir una constante que puede ejecutar una función anónima no termina de convencerme.
class Example {
    public const VALIDATOR = static function($value) {
        return !empty($value);
    };
}
(fuente del código: https://pixicstudio.medium.com/php-8-5-new-developer-features-f9617311c590) 
Para resolver eso mismo podemos crear un functor o podemos usar también un trait, o incluso una clase con un método estático (pero mejor los traits).
Un functor al ser una clase se puede inyectar sin problemas en otras clases y un trait está precisamente pensado para ser usado dentro de otras clases.
interface Functor
{
    public function fmap(callable $fn): Functor
}
class Arr implements Functor
{
    protected $items;
    public function __construct(array $items)
    {
        $this->items = $items;
    }
    public function fmap(callable $fn): Functor
    {
        return new static(array_map($fn, $this->items));
    }
}
(fuente del código: https://www.kai-sassnowski.com/post/php-functors-1/)
Un functor o un servicio normal los plantearía en caso de que sea necesario conectar con la capa de Infraestructura (acceso a bbdd, a servicios externos de terceros, etc.), un trait por otro lado lo implementaría en caso de que correspondiere a la capa de Dominio para manipular datos pero es que no veo en que momento sería buena idea o interesante añadir una función anónima a una constante.
Así que lo dicho, no veo en qué momento sería buena idea añadir una función anónima a una constante.
    
Top comments (0)