Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Open Closed com mais de uma interface.

Boa noite....

Fiquei com uma duvida referente ao Open Closed, já vi alguns outros tutorias mais ainda não consegui entender 100% sua aplicação. Por exemplo neste curso temos a interface Pontuavel. Ao implementar esta interface em uma classe, nós passamos a exigir que essa classe implemente um metódo chamado recuperarPontuacao, e até ai tudo bem a final definimos exatamente o que precisavamos.

Para o meu exemplo, vou utilizar classes que não fazem parte do projeto.

Vamos supor que eu tenha a classe Post e a classe Vídeo.

Ambas implementaram a interface Pontuavel, que serve para que as mesmas recuperem suas pontuações. Porém agora vamos dizer que eu também precise pegar a duração, tanto de um Video quanto de um Post.

Como eu poderia fazer para que ambas as minhas classes Video e Post também recebam a interface "Duravel".

///////////////////////////////////////// class Post implements Pontuavel { public function __construct(private string $nome, private int $duracao) { }

public function recuperarPontuacao(): int 
{
    return 100;
}

}

class Video implements Pontuavel { public function __construct(private string $nome, private int $duracao) { }

public function recuperarPontuacao(): int 
{
    return 200;
}

} //////////////////////////////////////////////////////

1 resposta
solução!

Não deu pra entender sua pergunta. Para implementar mais de uma interface basta utilizar mais de uma fazendo um extends de uma com uma terceira assim:

<?php
interface a
{
    public function foo();
}

interface b
{
    public function bar();
}

interface c extends a, b
{
    public function baz();
}

class d implements c
{
    public function foo()
    {
    }

    public function bar()
    {
    }

    public function baz()
    {
    }
}
?>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software