¿Cómo organizáis un proyecto Laravel cuando empieza a crecer?
Llega un momento en todo proyecto Laravel en el que app/Models tiene cuarenta archivos y los controladores han engordado sin que nadie lo decidiera.
Yo he pasado por varias etapas:
- Todo en controladores. Funciona hasta que no funciona.
- Service classes. Mejor, pero acabas con un
UserServicede mil líneas que es un cajón de sastre. - Acciones de un solo propósito. Una clase, un método
handle(), una cosa. Es lo que uso ahora.
final class PublishPost
{
public function handle(Post $post): Post
{
$post->update(['published_at' => now()]);
PostPublished::dispatch($post);
return $post;
}
}
Lo que más me ha ayudado no es la estructura en sí, sino la regla: si no sabes dónde poner algo, es que la clase que buscas todavía no existe.
¿Vosotros cómo lo lleváis? Me interesa especialmente quien haya probado modularizar por dominio en un monolito, porque yo nunca acabo de verlo claro.