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)