Вы находитесь на странице: 1из 19

Funções

Bacharel em Ciência da Computação (UFG)


Especializando em Engenharia de Software

Analista de Sistemas – SIGMA / MDIC


Professor Formador EAD – NEAD/ETEB
george@georgemendonca.com.br
http://www.georgemendonca.com.br
Funções
• Introdução

– Utilizadas para modularizar e organizar o código dos


programas.
– Um bloco de código que pode ser reutilizado sempre que
precisarmos dele.
– Qualquer código PHP válido pode ser implementado
dentro de uma função.

13/02/2011 2
Funções
• Introdução

– Criando funções em PHP:


• Toda função em PHP começa com a palavra chave function.
• O nome deve começar por letras e nunca por número.
• Nome deve ser seguido de ( ), com ou sem argumentos.
• O bloco de comandos inicia-se com {.
• Após a abertura da chave insere-se o bloco de código da função.
• Finaliza-se com }.

13/02/2011
,
• Os argumentos são separados por dentro dos parêntesis. 3
Funções
• Introdução

– Argumentos: por valor ou por referência (&).

– Execução:
• Quando uma função é chamada, o fluxo de execução de um
programa é interrompido e passado para tal função.
• Após o término da execução, a função devolve o fluxo para o
programa principal.

13/02/2011 4
Funções
• Introdução
– Declaração de Funções em PHP

function nomeDaFuncao([$arg1], [$arg2], ..., [$argn])


{
bloco comandos;
[return $valor;] // retorna valor
}

Opcional

13/02/2011 5
Funções
• Implementando funções com textos simples

<?php
/**
* Função para imprimir um texto simples
*/
function imprimindoTexto() {
echo "Olá, eu sou uma função em PHP! <br /> ;-)";
}

imprimindoTexto();

Saída:

Olá, eu sou uma função em PHP!


;-)

13/02/2011 6
Funções
• Implementando funções com textos simples
<?php
/**
* Função para imprimir um texto simples com argumento
* @param string $str
*/
function imprimindoTextoArgumento($str) {
echo $str;
}

$texto = "<br />Função com argumento por valor! <br /> ;-)";
imprimindoTextoArgumento($texto);

Saída:

Função com argumento por valor!


13/02/2011
;-) 7
Funções
• Implementando funções com textos simples
<?php
/**
* Função para imprimir um texto simples com return
* @param string $str
*/
function imprimindoTextoReturn($str) {
return $str;
}

$texto = "<br />Função utilizando retorno! <br /> ;-)";


echo imprimindoTextoReturn($texto);

Saída:

Função utilizando retorno!


;-)
13/02/2011 8
Funções
• Criando funções em arquivo externo

<?php // areas-poligonos.func.php
function areaQuadrado( $lado ) {
return $lado * $lado;
}

function areaRetangulo( $base, $altura ) {


return ( $base * $altura );
}

function areaTriangulo( $base, $altura ) {


return ( $base * $altura ) / 2;
}

13/02/2011 9
Funções
• Criando funções em arquivo externo
<?php // areas-poligonos.php

require 'areas-poligonos.func.php';

$ladoQuadrado = 4;
$baseRet = 5;
$alturaRet = 8; Saída:
Área do quadrado: 16
$baseTriang = 5; Área do retângulo: 40
$alturaTriang = 8; Área do triângulo: 20

echo 'Área do quadrado: ';


echo areaQuadrado($ladoQuadrado);
echo '<br /> Área do retângulo: ';
echo areaRetangulo($baseRet, $alturaRet);
echo '<br /> Área do triângulo: ';
13/02/2011
echo areaTriangulo($baseTriang, $alturaTriang); 10
Funções
• Funcões variáveis

– O PHP suporta variável com parênteses.

– Sendo assim, ao encontrar uma variável desta natureza, o


PHP tentará executar a função com o nome do conteúdo
da variável.

13/02/2011 11
Funções
• Funcões variáveis
– Exemplo:
<?php // areas-poligonos.php

require 'areas-poligonos.func.php';

$func1 = "areaQuadrado"; Saída:


$func2 = "areaRetangulo"; Área do quadrado: 25
Área do retângulo: 125
$func3 = "areaTriangulo"; Área do triângulo: 600

echo 'Área do quadrado: ';


echo $func1(5);
echo '<br /> Área do retângulo: ';
echo $func2(10, 12.5);
echo '<br /> Área do triângulo: ';
echo $func3(30, 40);
13/02/2011 12
Funções
• Funções lambda (closures)

– Funções lambda, também conhecidas como funções


anônimas ou closures permitem a defenição de uma
função sem especificar o seu nome.

– Muito utilizadas como o valor de parâmetros callback e


diversas outras utilizações.

– São utilizadas também como valor de retorno de variáveis.

13/02/2011 13
Funções
• Funções lambda (closures)
– Exemplo como parâmetro callback:

<?php

$arrayMult = Saída:
array_map( Array
function($value) { (
return $value * 7; [0] => 70
[1] => 245
},
[2] => 350
array(10, 35, 50, 80, 33) [3] => 560
); [4] => 231
)
echo '<pre>';
print_r($arrayMult);

13/02/2011 14
Funções
• Funções lambda (closures)
<?php // Funções
– Valor de retorno de variável: $soma = function ($a, $b) {
return $a+$b;
<?php };
require 'lambda-calculadora.func.php'; $subtrai = function ($a, $b) {
return $a-$b;
echo $soma(3,9); };
echo '<br />'.$subtrai(3,9); $multiplica = function ($a, $b) {
echo '<br />'.$multiplica(3,9); return $a*$b;
echo '<br />'.$divide(3,0); };
$divide = function ($a, $b) {
if($b == 0) {
Saída: echo "<br />Divisão por zero!";
12 }
-6
else {
27
return $a/$b;
Divisão por zero!
}
};

13/02/2011 15
Funções
• Funções lambda (closures)
– Utilizando a função create_function:

<?php
$add = create_function('$i,$j', 'return $i+$j;');

// retorna 2
echo "O resultado da soma é: {$add(1, 1)}.";

13/02/2011 16
Funções
• Exercitando:
Execício

Vamos agora criar um novo projeto, chamado


projeto padrão (aulas-php5.3-oo-projeto-padrao).
Dentro deste projeto crie as pastas:
• class
• func
• inc
• public
Crie o arquivo /func/html.php e crie as 2
funções e utilíze-as com criatividade:
• header_site() – topo da página
• footer_site() – rodapé da página
13/02/2011 17
Funções
• Definindo uma estrutura de
aplicação
– Estrutura de pastas e arquivos:
• Podemos criar agora um projeto para
cada módulo do curso.
• Dentro dos projetos teremos vários
diretórios como mostra a imagem ao
lado.
• A estrutura básica do projeto contém
as pastas demonstradas, podendo ter
mais pastas se for necessário.
• A arquitetura da aplicação é explicada
no próximo slide.
13/02/2011 18
Funções
• Definindo uma estrutura de aplicação padrão
inc

nome-conteudo.php

Aplicação public
class
js
nome-classe.php app-nome.php imagens
... css
...

func

13/02/2011
nome-funcao.php 19
...

Вам также может понравиться