38 manipulao-de-funes-no-php - CodeHamper

Manipulação de funções no PHP

Utilizando funções




Criação

Para declarar uma função em PHP, utiliza-se o operador function seguido do nome que desejamos lhe atribuir, sem espaços em branco e iniciando obrigatoriamente com uma letra. Na mesma linha, digitamos a lista de argumentos (parâmetros) que a função irá receber, separados por virgula. Em seguida, encapsulado por chaves {}, vem o código da função.

No final, utiliza-se a cláusula return para retornar o resultado da função (interger, string, array, objeto, etc).

<?php
  //exemplo de função
  function nome_da_funcao($arg1, $arg2, $argN){
    $valor = $arg1+$arg2+$argN;
    return $valor;
  }
?>

No exemplo a seguir criamos uma função que calcula o índice de obesidade de alguém. A função recebe dois parâmetros ($peso e $altura) e retorna um valor definido por uma fórmula.

Exemplo:

<?php
 function calcula_obesidade($peso, $altura){
  return $peso / ($altura*$altura);
 }
 echo calcula_obesidade(70, 1.85);
?>

Resultado:
20.45288531775

Variáveis globais

Todas as Variáveis declaradas dentro do escopo de uma função são locais. Para acessar uma variável externa ao contexto de uma função sem passá-la como parâmetro, é necessário declará-la como global. Uma variável global é acessada a partir de qualquer ponto da aplicação. No exemplo a seguir, a função criada converte quilômetros para milhas, enquanto acumula a quantidade de quilômetros percorridos em uma variável global ($total);

<?php
  $total = 0;
  function km2mi($quilometros){
    global $total;
    $total +=$quilometros;
    return $quilometros * 0.6;
  }
  echo ' percorreu ' . k2mi(100) . ''milhas \n'' ;
  echo ' percorreu ' . k2mi(200) . ''milhas \n'' ;
  echo ' percorreu no total ' ; $total . ' quilometros ';
?>

Resultado
percorreu 60 milhas
percorreu 120 milhas
percorreu no total 300 quilometros

Variáveis estáticas

Dentro do escopo de uma função podemos armazenar variáveis de forma estática. Assim, elas mantêm o valor que lhes foi atribuído na última execução. Declaramos uma variável estática com o operador static.

<?php
  function percorre ($quilometros){
    static $total;
    $total += $quilometros;
    echo ''percorreu mais $quilometros do total de $total \n'';
  }
  percorre(100);
  percorre(200);
  percorre(50);
?>

Resultado
percorreu mais 100 do total de 100;
percorreu mais 200 do total de 300
percorreu mais 50 do total de 350

Passagem de parâmetros

Existem dois tipos de passagem de parâmetros: por valor (by value) e por referência (by reference). Por padrão, os valores são passados by value para as funções. Assim, o parâmetro que a função recebe é tratado como variável local dentro do contexto da função, não alterando o seu valor externo.

<?php
  function Incrementa($variavel, $valor){
    $varialvel += $valor;
  }
  $a = 10;
  Incrementa($a, 20)
  echo $a;
?>

Resultado
10

Para efetuar a passagem de parâmetros by reference para as funções, basta utilizar o operador & na frente do parâmetro, fazendo com que as transformações realizadas pela função sobre a variavel sejam validas no contexto à função.

<?php
  function Incrementa(&$variavel, $valor){
   $variavel +=$valor;
  }
  $a = 10;
  Incrementa($a, 20);
  echo $a;
?>

Resultado
30

O PHP permite definir valores default para parâmetros. Reescrever a função anterior, declarando o default de $valor como sendo 40. Assim, se o programador executar a função sem especificar o parâmetro, será assumido o valor 40.

<?php
  function Incrementa(&$variavel, $valor = 40){
    $varial +=$valor;
  }
  $a = 10;
  Incrementa($a);
  echo $a;
?>

Resultado
50

O PHP também permite definir uma função com o número de argumentos variáveis, ou seja, permite obtê-los de forma dinâmica, mesmo sem saber quais são ou quantos são. Para obter quais são, utilizamos a função func_get_args(); para obter a quantidade de argumentos, utilizamos a função func_num_args().

<?php
  function Ola(){
    $argumentos = func_get_args();
    $quantidade = func_num_args();
    for($n=0; $n<$quantidade;$n++){
      echo ' ola ' . $argumentos[$n] . ''\n'';
    }
  }
  Ola('Joao', 'Maria', 'Jose', 'Pedro');
?>

Resultado
ola Joao
ola Maria
ola Jose
ola Pedro

Recursão

O PHP permite chamada de funções recursivamente. No caso a seguir criaremos uma função para calcular o fatorial de um número.

<?php
  function Fatorial($numero){
    if($numero ==1)
         return $numero;
    eles
         return $numero * Fatorial($numero -1);
    }
    echo Fatorial(5) . ''\n'';
    echo Fatorial(7) ;
?>

Resultado
120
5040


CodeHamper © 2017 - Todos os direitos reservados