Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Exemplo de SRP

Através desta aula descobri que estou usando Acrive Record aqui nas minhas classes :) Foge o Princípio da Responsabilidade Única, mas vou deixar assim por enquanto.

O que eu queria mostrar é se pensei certo aqui na minha implementação. Veja.

Eu de novo com a minha paginação... :D

Minha classe Pagamento:

class Pagamento
{

  private $meu_atributo_qualquer
  private $meu_outro_atributo

  private $paginacao = [];

  public function paginar(Paginacao $paginacao)
  {
    $this->paginacao = $paginacao;
  }

  public function getPaginacao()
  {
    return $this->paginacao;
  }

Aqui o método paginar recebe uma instância da classe Paginacao

Aí o resto ficou mais fácil. Pego os métodos da classe Paginacao através do método getPaginacao da classe de pagamento.

Agora, pelo menos as coisas fazem mais sentido aqui no meu código.

Sei que ainda falta implementar bastante coisa, mas estou no caminho certo?

3 respostas
solução!

Fala, Flavio. Eu não faria isso não.

De novo, como já te respondi em outros momentos:

Paginação é uma responsabilidade do mecanismo de entrega e da apresentação.

A paginação vai ser feita na sua camada de infraestrutura (se estiver utilizando algum padrão arquitetural mais robusto), ou até no controller se estiver aprendendo MVC .

Eu não criaria essa classe Paginacao como uma classe vinculada ao domínio da minha aplicação, entende?

Além disso:

Pagamento é um só. Como se pagina um único dado? Não existe isso. Paginação é feita em grandes coleções de dados. ;-)

Entender, não entendi, mas já ajuda :)

Mecanismo de entrega, camada de infraestrutura, domínio, coleções de dados, são muitos termos para compreender.

Mas vamos seguindo.

Obrigado!

Então, Flávio, vou tentar explicar rapidinho. Eu pensei que os termos fossem autoexplicativos. Foi mal rsrs

Mecanismo de entrega: O que é utilizado para sua aplicação entregar as funcionalidades. Uma aplicação web entrega as funcionalidades através da: Web. rsrs O protocolo HTTP é o protocolo usado na web.

Infraestrutura é o que não faz parte do negócio: Comunicação com a web, com banco de dados, log, envio de e-mail. Esse tipo de coisa não é o que faz a empresa ser a empresa, entende?

Domínio: Exatamente o contrário da infraestrutura. É o que faz a empresa ser a empresa? O que faz a Alura ser a Alura? É a a linguagem que ela usa? É o sistema de e-mails? É o banco de dados? Não. São os alunos, os cursos, os vídeos, formações, etc. Isso faz parte do domínio.

Coleção de dados: Nem sei como colocar isso em outras palavras... Um aluno é um aluno, certo? Uma turma é uma coleção de alunos. Um array de alunos também é uma coleção de alunos. Coleção é algo que agrupa um ou mais elementos.