1-PHP Introdução
Exercícios
Curso Banco Dados
IntroducaoBD.php

Cap. 2 - PHP Intermediário

2.1 - Funções

Objetivo: Estudar aspectos específicos de Arrays e Strings em PHP.

Conteúdo da Aula:


Introdução

Nessa aula veremos as estruturas um pouco mais sobre arrays e funções em PHP.

1. Funções

Na Matemática, funções podem ser definidas a partir de relações entre conjuntos. Geralmente tem-se um conjunto domínio e um conjunto imagem, e a função define uma regra entre eles. Um valor, pertecente ao domínio, é colocado dentro da regra, resultando num novo valor, pertencente ao conjunto imagem.

Em computação é a mesma coisa...

Uma função (no contexto da programação) é um programa que relaciona parâmetros de entrada com ações, valores ou parâmetros de saída.

Veja a figura abaixo.

dinamica

Vantagem da função em programação: reutilização do código.

2. Criação de Funções

2.1 Funções em PHP: Criação

A função em PHP é criada a partir da palavra reservada function. Para definir a função portanto, escreve-se function seguido do nome da função e dos parâmetros de entrada. O nome da função deve iniciar com uma letra. O argumento de saída é definido com o comando return.

Veja o exemplo a seguir.

Exemplo

<?php
//funcao soma dois numeros
function soma_2($x,$y)
{

return $x+$y;
}
?>

2.2 Exemplo

Naturalmente a função precisa ser chamada dentro de um programa (principal). Veja o exemplo a seguir. Nele misturamos HTML com PHP (vamos ver isso mais na frente no curso). Repare nos detalhes do exemplo. Repare como a função é chamada.


<html>
<h2>Exemplo de Função em PHP</h2>
<?php
//funcao soma dois numeros
function soma_2($x,$y)
{
return $x+$y;
}
?>
<?php $x=2;$y=3.3l;?>
<hr>
<h4>Resultado da soma de <?php echo $x." + ".$y. "<br>" ?> </h4>
<?php
echo  $x." + ".$y." = ".soma_2($x,$y);
?>
</html>

3. Variáveis Globais e Estáticas

3.1 Escopo da Função

Variáveis Globais e Locais

O escopo da função determina como (ou em que nível de hierarquia) o dado pode ser acessado. Temos o acesso local, a partir de váriaveis locais ou acesso global, feito a partir de variáveis globais.

As variáveis que passam a existir (que foram declaradas ou criadas) dentro da função são locais. Elas são acessadas apenas dentro da função.

Variáveis globais, ou seja, que podem ser acessadas de fora da função devem ser declaradas como globais, utilizando a palavra reservada global.

Veja o exemplo, extraído de [1].

<?php
$total = 0;

function km2mi($quilometros)
{
global $total;
$total +=$quilometros;
return $quilometros*0.6;
}
echo "percorreu ".km2mi(100)."milhas \n";
echo "percorreu ".km2mi(200)."milhas \n";
echo "percorreu no total ".$total."quilometros \n";

?>

Variáveis Estáticas

O PHP possui uma categoria de variável denominada variável estática, que mantém seu o valor atribuído na última execucação.

Declara-se a variável estática com o operador static

Veja o exemplo, extraído de [1].

<?php


function percorre($quilometros)
{
static $total;
$total +=$quilometros;
echo "percorreu mais $quilometros do total de $total <br>";
}
percorre(100);
percorre(200);
percorre(300);


?>

Atenção

Repare nos detalhes do programa:

  1. a função não retorna nada

  2. a forma como a função echo é chamada


Veja mais exemplos usando array em php.net

4. Passagem de Parâmetros

Assim como em C, o PHP possui dois tipos de passagem de parâmetros: por valor ou por referência.

Por default, os dados são passados por valor.

Para efetuar a passagem de parâmetro por referência, deve-se usar o operador & na frente do parâmetro.

Veja os dois exemplos a seguir.

Passagem por Valor

<?php


function Incrementa($variavel, $valor)
{
$variavel+=$valor;
}
$a=10;
Incrementa($a,20);
echo $a;

?>

Atenção

Repare nos detalhes do programa:

  1. a função não retorna usando-se return

  2. a função retorna o valor na variável $a

  3. ...mas $a já tem um valor definido no programa

  4. ...tem algo errado com essa função, não tem? a idéia era que $a contivesse o valor de $variavel...

  5. ...podiamos ter usado um return para $variavel...

Uma solução para o problema acima é usar a passagem por referência.

Passagem por Referência

<?php


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

?>

Referência, em PHP, significa acessar o mesmo conteúdo de variável através de vários nomes.

A referência em PHP serve para definir a posição (endereço) da variável na memória. Veja no exemplol abaixo que $a e $b "apontam" para o mesmo lugar:

<?php
$a 
=& $b;
?>
Estude esse outro exemplo:
<?php
function foo(&$var) { }

foo($a); // $a é "criada" e setada par null

$b = array();
foo($b['b']);
var_dump(array_key_exists('b'$b)); // bool(true)

$c = new StdClass;
foo($c->d);
var_dump(property_exists($c'd')); // bool(true)
?>

Veja mais sobre referências em PHP no php.net.


5. Recursão

Assim como na linguagem C é possível fazer uso da recursão.

Veja o exercício 1 na seção Exercícios.

A recursividade é um recurso da programação no qual uma função chama a si mesma. Em várias situações essa propriedade facilita a execução do códgio.

6. Incluindo Arquivos em Programas PHP

Em PHP é frequente a necessidade de se incluir arquivos em nosso programa principal. Geralmente isso acontece como consequencia da organização do programa: é melhor separarmos os programas em diferentes arquivos.

Isso é feito com o comandos include e require e seus derivados. Veja a seguir.

6.1 Comando include

Comando include() inclui e avalia um arquivo em um programa PHP. O código do arquivo incluido entra no escopo do programa, tornando-se disponível a partir da linha de inclusão. Se o arquivo não existir, produzirá uma mensagem de advertência (warning)

Exemplo

Nesse exemplo temos dois programas: o primeiro é uma função que é incluida no segundo. O primeiro arquivo chama-se biblioteca.php e é incluido no segundo, teste.php.
Arquivo biblioteca.php
<?php
//funcao quadrado
function quadrado($numero)
{
 return $numero*$numero;
 }
?>

Arquivo teste.php <?php //carrega o arquivo biblioteca.php include 'biblioteca.php'/ echo quadrado(4); ?>

6.2 Comando require()

O comando require() é semelhante ao comando include() com a diferença que ao invés de produzir uma advertência quando ocorre um erro ele produz uma mensagem de erro (Fatal Error).

6.3 Comando include_once()

Funciona da mesma forma que o include a não ser que o arquivo informado já tenha sido incluido. Nesse caso ele não o inclui novamente. Esse comando é útil caso o programa necessite passar mais de uma vez pelo comando include()

6.4 Comando require_once()

Funciona como o comando require, mas só inclui o arquivo uma vez.

7. Exemplos

Estude os exemplos contidos em php.net - funções

8. Exercícios de Revisão

1. Recursão

Faça uma função em PHP para calcular o fatorial de um número inteiro. Rode um programa em PHP para testá-la.

2. Programa em PHP

Faça uma função para calcular raizes de equação do segundo grau em arquivo. Faça um programa (em outro arquivo) para chamar essa função.

Use passagem por valor.

3. Programa em PHP

Repita o programa do Exercício anterior usando passagem por referência.

Referências

[1] PHP - Programando com Orientação a Objeto - Pablo Dall'Oglio



voltar ao início da página