1
resposta

Dúvida sobre Clean Architecture

Estou utilizando dos conceitos de Clean Architecture para construir uma API com o Symfony. Preciso implementar a interface nativa do PHP JsonSerializable nas classes do domínio da minha aplicação. Para não alterar minhas entidades, como eu implemento essa interface nas minhas classes de domínio? No Clean Architecture onde isso se encaixa? Na parte de Use Cases, na parte de Infra, ou o melhor é eu simplesmente criar uma pasta Service ou Helper e criar alguma classe que faça isso por mim ?

1 resposta

Olá Eduardo! Tudo bem?

Peço desculpa pela demora para responder o seu tópico.

Implementar a interface JsonSerializable nas classes de domínio é uma boa prática para garantir que essas classes possam ser facilmente serializadas em formato JSON. No contexto do Clean Architecture, essa implementação se encaixa na camada de Domínio, pois a serialização é uma responsabilidade relacionada à estrutura e ao comportamento das entidades do seu sistema.

Uma opção seria criar uma classe base abstrata que implementa a interface JsonSerializable e fazer com que suas classes de domínio herdem dessa classe base. Dessa forma, você não precisaria alterar diretamente suas entidades, mas ainda assim poderia aproveitar a implementação da interface.

Por exemplo:

abstract class BaseEntity implements JsonSerializable
{
    // Implementação da interface JsonSerializable
    public function jsonSerialize()
    {
        // Lógica de serialização das propriedades da entidade em formato JSON
    }
}

class MinhaEntidade extends BaseEntity
{
    // Implementação da entidade
}

Assim, todas as classes de domínio que herdarem de BaseEntity terão a implementação da interface JsonSerializable disponível. Reforço que o exemplo compartilhado é apenas para que você tenha uma ideia inicial.

Espero ter ajudado. Caso tenha mais dúvidas relacionadas com este tópico, estarei à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.