Motivos para implementar Hux en tu proyecto

Submitted by Oskar on Sat, 11/03/2023 - 22:05

Hux es módulo que permite escribir módulos de Drupal sin necesidad de usar el archivo *.module, me han comentado que únicamente para algunos hooks que hacen referencia al tema sería necesario usar el archivo *.module, me queda por comprobar eso.

Uno de los requisitos importantes de Hux es que es necesario usar PHP 8.x ya que usa anotaciones en los métodos de las clases que se crean, otro de los requisitos es que solo se puede usar a partir de la versión 9.4 de Drupal, o en su defecto la 9.3 con un parche que existe, ya que para hacer posible el funcionamiento del módulo hubo que modificar el core de Drupal.


¿Qué nos permite hacer Hux? Con Hux podemos mover los hooks del archivo *.module a clases dentro de la ruta /src/Hooks del módulo custom que se esta desarrollando, de esta forma en vez de tener un archivo *.module gigantesco lo separaremos en archivos mucho más pequeños y nos permite organizar mejor el código, con Hux podemos usar una o más clases para escribir nuestros hooks, tenerlo todo en una única clase que simule el viejo *.module es posible, pero también podemos tener varias clases el como o que tiene cada clase ya queda a decisión de cada uno, se puede ordanizar pensando en entidades de Drupal, se puede organizar el código pesando en DDD, o como queramos ya que ahora no estamos obligados a usar el archivo *.module (menos los hooks de temas).

Otra de funcionalidades que tenemos es que podemos invocar el mismo hook varias veces en la misma clase o en clases diferentes y gracias a esto mantener el principio de responsabilidad única cada vez que se invoca el hook; un ejemplo de esto sería un tipo de contenido que quiere definir varios pseudofields, en vez de tener todos los pseudofields en 2 hooks, se puede tener una clase por cada pseudofield y en esa clase declarar los hooks necesarios para cada uno de los pseudofields.

 

En este artículo se explica mejor que se puede hacer con el módulo, y el archivo Readme.md del módulo
 

Antes de pasar al código una reflexión sobre si se tiene que usar o no Hux, desde mi punto de vista yo creo que si se debe usar, no creo que sea un módulo que vaya a descontinuarse porque se ha permitido modificar el core para hacerlo funcionar, además Hux viene a resolver el problema que tiene Drupal con los Hooks, a hora mismo estamos en un momento en que no se sabe si se van a sustituir por eventos, se van a mantener, etc... con Hux los Hooks se mantienen pero en vez de codificarse en el archivo *.module y tener con código espageti tenemos un código más legible y organizado.

La parte negativa es que es un módulo que solo se usa en 100 proyectos y eso puede dar miedo, pero también es verdad que en algunos proyectos hemos usado módulos en alpha, beta.... Lo bueno de Hux es que como al final lo que hacemos es escribir los mismos Hooks encapsulados en métodos de clase luego llevarlos archivo *.module sería tan sencillo como hacer un copiar/pegar.

Ahora mismo mi opinión personal es que las dudas de Hux supera con creces las dudas de la continuidad del módulo, que por otro lado al ser un módulo de software libre, en caso de que el autor del módulo no lo quiera continuar otra persona de la comunidad podría hacerse mantenedor.


Y para los que les gusta código os dejo unos snippets de I+D+i