Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida Function

Fala pessoal, tudo bem?

Por que quando eu chamo essa função, eu passo o parametro em formato de array, e enquanto a função está declarada como uma variavel qualquer e dentro do setcookie o parametro do email nem como variável está. Por que?

Código como o professor fez e funcionou:

function logaUsuario($email) {
    setcookie("usuario_logado", email, time() +60);
}

 logaUsuario($usuario['email']);

Código como eu imaginava:

function logaUsuario($usuario['email']) {
    setcookie("usuario_logado", $usuario['email'], time() +60);
}

 logaUsuario($usuario['email']);

Alguem pode me ajudar?

6 respostas
solução!

Oi Caio,

Na hora de declarar a função, você declara um nome de parâmetro qualquer que só é visível dentro da própria função, ou seja, pode ter o nome que você quiser.

Na hora de chamar a função, você passa o valor a ser colocado no parâmetro nomeado anteriormente. A chamada da função não sabe qual o nome daquele parâmetro, e nem precisa saber.

Quando você faz, $usuario['email'] você está buscando dentro do array de usuario o valor correspondente ao email.

Você poderia fazer o mesmo código da seguinte forma:

function logaUsuario($email) {
    setcookie("usuario_logado", $email, time() +60);
}

$emailDoUsuario = $usuario['email'];
logaUsuario($emailDoUsuario);

ou ainda mandar o array inteiro para a função:

function logaUsuario($usuario) {
    setcookie("usuario_logado", $usuario['email'], time() +60);
}

logaUsuario($usuario);

Este último caso não é recomendado pois não segue boas práticas de Orientação a Objetos que você verá nos próximos cursos.

Abraço!

Neste mesmo ponto eu fiquei com uma dúvida semelhante, porém, ela está relacionada apenas ao funcionamento interno da função. Ou seja, o professor fez o seguinte código:

function logaUsuario($email) {
    setcookie("usuario_logado", email, time() +60);
}

E no meu entendimento deveria ser assim:

function logaUsuario($email) {
    setcookie("usuario_logado", $email, time() +60);
}i

As duas formas funcionaram. E eu fiquei sem entender! Como o parâmetro email dentro do setcookie vai saber que está se referindo ao $email que foi passado pela chamada da função? Ele não deveria ter o $ também?

Oi Marcelo, tudo bem?

Sua dúvida passou batida porque o tópico já estava marcado como solucionado, então pra quem vê de fora não tem nada pendente por aqui.

Você se importa de abrir um novo tópico com essa sua questão? Garanto que em pouquíssimo tempo será respondido.

Olá Rodrigo, estou bem e você, como vai?

Eu aproveitei o tópico, já que a dúvida é quase a mesma. E vi que aqui já tinha mensagem de uma moderadora, então imaginei que ela seria notificada via email.

Mas sem problemas, irei abrir um novo tópico. Obrigado pela atenção.

Imagina, eu quem agradeço Marcelo!

Se quiser, poste aqui também o link do novo tópico que, além de ficar visível pra quem cair na mesma dúvida no futuro, vai chegar por email pra mim.

Eu peço para os nossos ninjas de PHP te darem uma força!

Obrigado Rodrigo, segue o link do novo tópico:

https://cursos.alura.com.br/forum/topico-duvida-na-function-logausuario-aula-3-25123