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

sobre a classe slug qual seria o melhor caminho

A classe slug colocada eu entendo que pode ser usada de duas maneiras

    public function recuperarUrl(): string
    {
        $slugNome = new Slug($this->nome);
        return 'http://videos.alura.com.br/' . http_build_query(['nome' => $slugNome]);
    }

ou no construtor

    public function __construct(Slug $nome)
    {
        $this->nome = $nome;
        $this->assistido = false;
        $this->duracao = \DateInterval::createFromDateString('0');
    }
    
    public function recuperarUrl(): string
    {
        return 'http://videos.alura.com.br/' . http_build_query(['nome' => $this->nome]);
    }

entendo para ficar no padrão seria a segunda alternativa, assim posso ter até outro tipo de slug na vida pra ser feito, como slug é final, está sendo dito que não terá extensão dela, então nunca mais terá um slug diferente deste, vale a pena fazer o segundo modo, ou o primeiro neste caso estaria certo, ou seria outra forma?

1 resposta
solução!

Olá, Fernando! Entendo sua dúvida e acho que posso te ajudar.

Ambas as alternativas que você apresentou têm suas vantagens, mas tudo depende de como você pretende usar a classe Slug no futuro.

Na primeira opção, a criação do Slug é feita dentro do método recuperarUrl(). Isso significa que a cada chamada do método, um novo Slug é criado. Isso pode ser útil se o nome do objeto puder mudar ao longo do tempo, pois assim o Slug sempre refletirá o nome atual.

public function recuperarUrl(): string
{
    $slugNome = new Slug($this->nome);
    return 'http://videos.alura.com.br/' . http_build_query(['nome' => $slugNome]);
}

Já na segunda opção, o Slug é criado no construtor da classe. Isso significa que o Slug será criado apenas uma vez, quando o objeto for instanciado, e não mudará mesmo que o nome do objeto mude. Isso pode ser útil se o nome do objeto for imutável.

public function __construct(Slug $nome)
{
    $this->nome = $nome;
    $this->assistido = false;
    $this->duracao = \DateInterval::createFromDateString('0');
}

public function recuperarUrl(): string
{
    return 'http://videos.alura.com.br/' . http_build_query(['nome' => $this->nome]);
}

Resumindo, a escolha entre as duas opções depende de como você pretende usar a classe Slug. Se o nome do objeto puder mudar, a primeira opção pode ser mais adequada. Se o nome do objeto for imutável, a segunda opção pode ser mais adequada.

Espero ter ajudado e bons estudos!