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 :)