Informática Numaboa
PHP rapidinho
Qui 20 Abr 2006 15:35 |
- Detalhes
- Categoria: PHP
- Atualização: Sexta, 26 Junho 2009 20:36
- Autor: vovó Vicki
- Acessos: 51773
Funções
Funções são perfeitas para programadores preguiçosos... eeepa! Não é por aí! Veja a coisa da seguinte forma: você está escrevendo um aplicativo que vai repetir determinada tarefa um zilhão de vezes. Você vai escrever o mesmo código um zilhão de vezes? É claro que não. O mais fácil é escrever uma função e usá-la toda vez que a tarefa tiver que ser executada.
Encare as funções como ferramentas. Ninguém joga fora a chave de fenda ou o martelo depois que apertou o parafuso ou meteu o prego na parede. O motivo é que, para realizar estas mesmas tarefas, podemos usar novamente as mesmas ferramentas (tá certo que tem neguinho metendo parafuso na parede com martelo, mas isto são outros quinhentos). Vamos a um exemplo de função em PHP:
Vamos martelar, perdão, destrinchar este código: a primeira coisa foi definir uma função, aquela que vai funcionar como ferramenta. Indicamos que estamos criando uma função através da palavra-chave function. Logo a seguir vem o nome da própria, neste caso 'martelo'. Observe que o nome da função é seguido por dois parênteses, assunto ao qual voltaremos logo mais. Em seguida definimos a área do 'bloco da função' com as tradicionais chaves e, nesta área, inserimos o código que deve ser executado quando a função for chamada. A única coisa que a nossa função 'martelo' faz é escrever na tela que martelos americanos fazem bang. Neste ponto, nossa ferramenta está pronta e ainda não aconteceu nada.
O interpretador PHP passa para a próxima linha e encontra uma chamada à função 'martelo' - vai para a área da função e põe na tela "Bang!...". Retorna para a linha de chamada e vai para a próxima. Põe "Bang!..." na tela e volta para encontrar a terceira chamada. Põe "Bang..." na tela e termina o script.
Moral da história: usamos a ferramenta três vezes, porém só escrevemos o código uma vez. A grande vantagem é que esta função pode ser chamada de qualquer ponto do script, ou seja, uma vez definida a função fica à nossa disposição 'for ever'.
Parâmetros de funções
Em algumas ocasiões queremos que uma função seja executada de acordo com alguma "ordem" específica, do tipo bata o martelo com a mão direita ou bata com a mão esquerda (temos que dar uma chance aos canhotos Estas "ordens" são recebidas através de variáveis que são enviadas a funções com o nome de parâmetros. Digamos que a chamada à função martelo indique o tipo de martelo que deve ser usado:
Novamente criamos a função martelo() só que, desta vez, há uma variável entre os parênteses - a variável $tipo. Esta variável é o parâmetro da função. Toda vez que a função for chamada ela espera receber um parâmetro que, neste caso, é do tipo string. O nome dos parâmetros não são importantes porque não é preciso conhecê-los quando se chama a função. Só é preciso enviar parâmetros do tipo certo e na ordem correta.
O parâmetro só será usado dentro da função e seu valor pode ser obtido referindo-se ao nome da variável declarada juntamente com a declaração da função. É claro que, quanto mais explícito for o nome do parâmetro, mais fácil fica programar. $tipo é melhor do que $x, né não?
Outro exemplo:
A esta altura você já sabe que a primeira chamada à função martelo(), agora feliz possuidora de dois parâmetros do tipo string, põe na tela a frase "Batendo na cabeça do gringo o barulho é Bang!" na primeira chamada. Na segunda chamada, o resultado será "Batendo no dedão do alemão o barulho é Kaput!" e, na terceira, "Batendo num ovo o barulho é Póc!". Mas o mais importante é saber que esta função espera dois parâmetros (nem mais e nem menos), do tipo string, que o primeiro se refere ao barulho produzido e o segundo ao lugar. Se sobrarem ou faltarem parâmetros, ou se o tipo não for o correto, as mensagens que você vai receber serão apenas mensagens de erro!
Usando return
Em algumas ocasiões, ao invés de querer que uma função aja diretamente, você precisa que ela retorne algo que possa ser utilizado na sequência do script ou por alguma outra função. As funções anteriores são exemplos de funções que agem diretamente e não devolvem apenas um texto na tela. Quando necessitamos de um retorno, as declarações de 'return' entram em ação. Veja um exemplo de uma destas situações:
Peraí! Este código tá muito complicado! Se é isto o que você está pensando, pode sossegar. Aqui vai a explicação:
- Primeiro definimos uma função chamada 'divideDoisNumeros' que pede dois parâmetros. Esta função simplesmente divide o primeiro parâmetro pelo segundo, guarda o resultado na variável $resultado e, logo em seguida, retorna (return) o valor desta variável. Podemos dizer que ela 'devolve' o resultado.
- Depois disso definimos uma função chamada 'multiplicaDoisNumeros' que também espera dois parâmetros. Esta função multiplica os dois parâmetros e devolve o resultado.
- A seguir, chamamos a função 'divideDoisNumeros'. Se só chamássemos a função divideDoisNumeros(), seu valor de retorno estaria perdido. Como queremos este valor, definimos uma variável denominada 'resultadoDivide' para armazenar o resultado, ou seja, $resultadoDivide é igual ao valor de retorno da função divideDoisNumeros(). Como enviamos os parâmetros 4 e 2, e como sabemos que a função devolve a divisão dos dois parâmetros, fica claro que nossa variável $resultadoDivide acaba guardando o valor 2.
- Depois declaramos a variável $resultadoMultiplica para podermos "caçar" o resultado da função multiplicaDoisNumeros(). O primeiro parâmetro desta função é a variável $resultadoDivide e o segundo é 10. Como sabemos que o valor de $resultadoDivide é 2, multiplicaDoisNumeros($resultadoDivide, 10) é o mesmo que multiplicaDoisNumeros(2, 10). Portanto, a variável $resultadoMultiplica recebe o valor 20 porque a função multiplicaDoisNumeros() multiplica 2*10.
- Daí são dois palitos: a função echo() põe 20 na tela e o script é encerrado. Viu só? Foi menos complicado do que parecia
Predefinindo parâmetros
Agora que você já sabe como funcionam os parâmetros, vamos ver o que vem a ser uma predefinição ou pré-inicialização. Predefinir significa atribuir um valor 'default' a uma variável. Você vai encontrar a palavra 'default' trocentas vezes em textos técnicos, manuais, tutoriais, etc. A tradução literal de default é falta, omissão. Um valor default é o valor que uma variável assume quando nenhum valor lhe é atribuído. Para tornar as coisas um pouco mais claras, veja o exemplo abaixo:
A declaração da função divideDoisNumeros() possui apenas uma diferença em relação à declaração anterior: ao definir o segundo parâmetro, foi-lhe atribuído um valor ($numeroDois = 2). O valor 2 é o valor default do parâmetro $numeroDois.
Quando atribuímos o valor da variável $resultadoDefault, chamamos a função divideDoisNumeros() com apenas um parâmetro. Isto significa que o parâmetro $numeroUm recebe o valor 6 e que o parâmetro $numeroDois nada recebe. Ahá!!! Se nada é atribuído ao parâmetro $numeroDois, então ele assume o valor default e passa a guardar o valor 2. A função divideDoisNumeros() faz a divisão de 6 por 2 e devolve o resultado 3. A função echo() põe $resultadoDefault na tela e vemos o 3 aparecer.
Para atribuir um valor à variável $resultadoControlado, chamamos a mesma função divideDoisNumeros() porém, desta vez, com dois parâmetros. Como atribuímos o valor 3 ao parâmetro $numeroDois da função, não há necessidade de usar o valor default - dizemos que o valor default foi dominado ou controlado. Neste caso, divideDoisNumeros() devolve a divisão de 12 por 3 e a variável $resultadoControlado passa a ter o valor 4.
Dentre todos os elementos do PHP, as funções são um dos mais importantes. O pessoal do PHP já produziu muitíssimas funções que podem ser encontradas no manual da linguagem. Antes de criar suas próprias funções é aconselhável dar uma olhada no manual. Podes crer, você perde menos tempo procurando uma função do que criando uma que já exista.