PHP para Iniciantes: Funções - Introdução

Se você chegou até aqui, lendo cada um dos meus artigos sem nunca ter pesquisado sobre funções... Parabéns! É realmente um desafio continuar estudando vendo constantemente algo que ainda não estudou. Na prática, as pessoas tentam sanar os próprios questionamentos com a internet, vendo o que os outros desenvolvedores explicam sobre funções. Dito isso, é muito provável que você já tenha um certo feeling do que é uma função... Mas será que você entendeu mesmo?

Bom, se não entendeu, não é hoje que vai entender.

Wuut

Afinal, estamos apenas na introdução, ué. Aqui vamos refletir e filosofar sobre as origens desse termo. Eu sinceramente não posso falar por quem inventou isso, mas certamente podemos tentar entender a linha de raciocínio aplicada aqui.

Vamos ao dicionário: qual o significado da palavra função?

função

substantivo feminino

  1. atividade natural ou característica de um órgão, aparelho, engrenagem etc.

  2. obrigação a cumprir, papel a desempenhar.

"f. de mediador"

Certamente, o contexto que melhor se aplica na programação é "atividade natural de (...) uma engrenagem", mas prefiro o papel a desempenhar.

Por quê, Kiko?

Simplesmente porque uma função, por si só, não faz nada! Ela é apenas um conjunto de instruções a desempenhar. Para acionar essas instruções, você precisa acionar a função. Ou seja, ao invés de uma engrenagem, é mais fácil enxergar a função como um botão. Você já se perguntou "pra que serve esse botão"?

Botão

Pois é, faz sentido, não é? Então já temos um significado, mas você já pesquisou "o que é uma função" no Google? Veja essas duas definições que encontrei:

1 - Pág. da turma de PSI 2009-2010 da Escola Secundária D. Inês de Castro - Alcobaça

"Uma função é um pedaço de código que faz alguma tarefa específica e pode ser chamado de qualquer parte do programa quantas vezes desejarmos."

Uaaaau

2 - USP - Leônidas de Oliveira Brandão

"Se você precisar de um algoritmo com um objetivo muito bem definido (e.g. um algoritmo para encontrar o menor valor dentro uma lista dada) é melhor encapsulá-lo em um bloco de modo a poder invocá-lo sempre que precisar desse algoritmo. Geralmente todas as linguagens de programação possibilita esse encapsulamento e isso é feito na forma de uma função (...)"

Mindblowwwwww

Enfim...

No geral, a grande maioria se embasa na definição de ações, rotinas, algoritimos ou o que seja, que podem ser executados diversas vezes pela aplicação. Isso não está errado, mas eu tenho a leve impressão de que esses termos ainda são muito técnicos, não é mesmo? Já que é assim, que tal fazermos uma atividade bacana?

Calma, não se preocupe, não vou te pedir pra fazer nada absurdo. Você poderá fazer isso e continuar lendo o meu artigo, naturalmente. Na verdade, para que funcione, é essencial que faça enquanto está lendo. Vamos lá?

Desafio

Antes de começar, uma pequena observação: infelizmente eu não sei como tornar o desafio a seguir mais acessível, sinceramente. Quem por ventura não puder executá-lo, peço que tente capturar a mensagem por traz do desafio para aplicar em algum contexto da sua realidade, tudo bem? E se conhecer uma forma alternativa, pode deixar nos comentários que faço questão de editar o artigo para incluir aqui, fechado?! Vamos lá...

Primeiramente, fique em pé. Não se apoie na parede, em cadeira, nada, apenas fique em pé. Está conseguindo? Continue assim por cinco minutos. Tente ler isso aqui mais devagar, eu estou conversando com sua mente, hahaha. E enquanto você continua em pé, com o tempo, você vai sentir algumas movimentações involuntárias no seu corpo. Às vezes você vai um pouco mais pra frente, talvez um pouco mais pro lado, pra trás, sei lá, pra algum lado você vai e volta rapidamente. Isso se você não for um militar bem treinado, porque aí seria outro nível, rs.

E é isso, pode sentar. Você passou pelo desafio! Mas entendeu alguma coisa? Espero que não tenha lido isso tudo em menos de 30 segundos, se não você realmente não entendeu nada.

Mas ok, não precisa levantar de novo, eu vou explicar!

Enquanto você estava em pé, com apenas dois pontos de apoio, seu cérebro recebe a missão de te manter parado(a). Isso exige uma certa noção de equilíbrio, o que sugere que você constantemente fica capturando informações de vários sensores que indicam se você está parado(a) ou não. No menor sinal de desequilíbrio, alguns de seus músculos te jogam na direção contrária, buscando o reequilíbrio. Acontece que, às vezes, esses sinais são falsos, rsssss. Ou seja, seu próprio sensor te sabota, mas esse não é o ponto.

Quanto mais tempo em pé, mais vezes seu cérebro faz o papel de analista de posição. E ele não faz isso só quando você está parado(a). É bem provável que ele faça isso o tempo todo, até quando você está sentado(a). Algumas pessoas podem chamar os casos a seguir de reflexo, mas o fato é que quando sua cadeira quebra e você reage imediatamente, evitando uma queda vergonhosa, seu cérebro apenas estava o tempo inteiro ligado no seu equilíbrio.

Quando você tropeça e, instantaneamente, recupera o equilíbrio ajustando a posição do pé que colidiu, demonstra outro sinal de que seu pequeno analista está ligadaço.

Isso é uma função, Kiko?

Poderia ser, mas o certo é não. Seu cérebro faz diversas coisas ao mesmo tempo, então não podemos dizer que essa minúscula parcela das suas atividades é sua função. Na realidade, as funções são os pequenos conjuntos de instruções feitas para que isso possa acontecer, sabe?

Os sinais vem de vários lugares: pele, cerebelo, etc. Não consigo mencionar mais nada porque simplesmente não sei, apenas quero te mostrar que nem tudo o que você aciona realmente precisa ser chamado de função. Se o escopo da função for grande demais, tem boas chances de que isso poderia ser qualquer outra coisa chamando funções menores.

Entende? No geral, quando você pensa em reduzir uma série de comandos em uma única linha (sem ser apagando as quebras de linha), você pensa em função. No PHP, nós usamos funções o tempo inteiro para um monte de coisas. E, como se não bastasse, temos três tipos de funções:

  • funções internas (bult-in), nativas da linguagem ou de extensões instaladas;
  • funções definidas pelo usuário, as funções nomeadas;
  • e funções anônimas, as que são declaradas sem um nome de invocação, acionáveis apenas por referência.

É preciso ressaltar que, quando entrarmos no assunto de sintaxe, falaremos em dois momentos da vida de uma função: sua criação e sua(s) execução(ões). No caso das funções definidas pelo usuário, preciso reforçar que não é possível re-criar uma função nomeada mais de uma vez. O PHP irá disparar um erro grosseiro se tentar fazer isso.

No caso das funções internas, não tem como criar uma a nível da aplicação, ou seja, você apenas executa. Você também não pode criar uma função com o mesmo nome de uma função interna, então tenha cuidado na hora de escolher.

Dito tudo isso, como cada tipo tem suas próprias particularidades, vou deixar a análise de sintaxe para eles, beleza? Assim como farei artigos explicando minuciosamente o processo de criação das funções. O que significa que...

Por hoje é só! Curtiu? Comenta e compartilha! No próximo artigo, iremos falar sobre as funções internas, para mencionar apenas a sintaxe de execução de funções, que é comum para todos. Só depois disso falaremos da criação de funções e iremos com tudo sobre esse processo, fechado?! Fique antenade!

Inté!!