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

forma correta de usar o implode( )

Na aula o instrutor usa a função da seguinte forma:

public function getEnderecoCep(): string{
       $enderecoCep = [$this->endereco, $this->cep];
       $enderecoCompleto = implode(" - ", $enderecoCep);
        return $enderecoCompleto;

    }

porém eu testei de duas outras formas:

public function getEnderecoCep(): string{

       $enderecoCompleto = implode(" - ", [$this->endereco, $this->cep]);
        return $enderecoCompleto;

    }
 public function getEnderecoCep(): string{

       $enderecoCompleto = implode(" - ", array($this->endereco, $this->cep));
        return $enderecoCompleto;

    }

e todas 3 formas funcionaram.

Perguntas: todas estão certas? o uso de alguma delas pode causar um problema no futuro?

1 resposta
solução!

Oi Marcos,

Essa é uma ótima pergunta! e já vou dando um spoiler falando que não tem problema em utilizar nenhuma das três :)

Agora o que acontece e porque elas funcionam? Se olharmos na documentação oficial da função implode() vamos ver que ela tem dois parâmetros, o primeiro é uma string, que é o que vai ser usado para "juntar" todos os elementos

E no segundo parâmetro, que é o mais relevante aqui pra gente, ela aceita um array! e o que acontece é que no PHP existem vários jeitos de criarmos um array!

No jeito que eu fiz no curso eu fiz o seguinte:

$enderecoCep = [$this->endereco, $this->cep];
$enderecoCompleto = implode(" - ", $enderecoCep);

Na primeira linha, o que eu fiz foi criar um array utilizando uma das maneiras, que é colocando os valores entre vírgulas entre colchetes [], essa é a maneira literal de construirmos um array, é um dos atalhos que a linguagem dá pra gente e isso torna a linguagem mais expressiva.

Eu atribuí o resultado disso para o nome de $enderecoCep, e depois eu passei esse nome como segundo argumento da função implode(), como tudo que eu coloco entre colchetes [] retorna um array, o nome $enderecoCep vai conter um array e por isso ele funciona :)

Agora sobre a sua segunda abordagem:

$enderecoCompleto = implode(" - ", [$this->endereco, $this->cep]);

Isso é igual a minha abordagem, a única diferença foi que não alocamos um espaço de memória, estamos passando o array retornado pelos colchetes diretamente como argumento da função.

E a terceira aboradagem:

$enderecoCompleto = implode(" - ", array($this->endereco, $this->cep));

Também funciona igual! a diferença é que o PHP tem mais de um jeito de criar um array, podemos usar os colchetes ou passar eles como argumentos para a função array(). E isso é a mesma coisa, funciona exatamente igual.

Se tiver qualquer dúvida pode me perguntar :)