Sem utilizar a classe Slug para facilitar, criei duas formas de refatorar esse código: Utilizando variáveis no retorno
public function recuperarUrl(): string
{
$categoriaFormatada = str_replace(' ', '-', strtolower($this->categoria));
$nomeFormatado = str_replace(' ', '-', strtolower($this->nome));
return 'http://videos.alura.com.br/' . $categoriaFormatada . '/' . $nomeFormatado;
}
Utilizando variáveis no retorno e uma função interna
public function recuperarUrl(): string
{
function formataParaUrl($input) {
return str_replace(' ', '-', strtolower($input));
}
$categoriaFormatada = formataParaUrl($this->categoria);
$nomeFormatado = formataParaUrl($this->nome);
return 'http://videos.alura.com.br/' . $categoriaFormatada . '/' . $nomeFormatado;
}
Utilizando a classe Slug, a refatoração é a mesma do instrutor, então não há necessidade de repetição