Funções PHP
O verdadeiro poder do PHP vem de suas funções.
O PHP possui mais de 1000 funções integradas e, além disso, você pode criar suas próprias funções personalizadas.
Funções embutidas do PHP
O PHP tem mais de 1000 funções internas que podem ser chamadas diretamente, de dentro de um script, para realizar uma tarefa específica.
Por favor, confira nossa referência PHP para uma visão geral completa das funções internas do PHP .
Funções definidas pelo usuário PHP
Além das funções internas do PHP, é possível criar suas próprias funções.
- Uma função é um bloco de instruções que pode ser usado repetidamente em um programa.
- Uma função não será executada automaticamente quando uma página for carregada.
- Uma função será executada por uma chamada para a função.
Criar uma função definida pelo usuário em PHP
Uma declaração de função definida pelo usuário começa com a palavra function
:
Sintaxe
function functionName()
{
code to be executed;
}
Nota: Um nome de função deve começar com uma letra ou sublinhado. Os nomes das funções NÃO diferenciam maiúsculas de minúsculas.
Dica: Dê à função um nome que reflita o que a função faz!
No exemplo abaixo, criamos uma função chamada "writeMsg()". A chave de abertura ( { ) indica o início do código da função e a chave de fechamento ( } ) indica o fim da função. A função exibe "Hello world!". Para chamar a função, basta escrever seu nome seguido de colchetes ():
Exemplo
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // call the function
?>
Argumentos da função PHP
As informações podem ser passadas para funções por meio de argumentos. Um argumento é como uma variável.
Os argumentos são especificados após o nome da função, dentro dos parênteses. Você pode adicionar quantos argumentos quiser, basta separá-los com uma vírgula.
O exemplo a seguir tem uma função com um argumento ($fname). Quando a função familyName() é chamada, também passamos um nome (por exemplo, Jani), e o nome é usado dentro da função, que gera vários nomes diferentes, mas um sobrenome igual:
Exemplo
<?php
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
?>
O exemplo a seguir tem uma função com dois argumentos ($fname e $year):
Exemplo
<?php
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
?>
PHP é uma linguagem livremente tipada
No exemplo acima, observe que não precisamos informar ao PHP qual é o tipo de dado da variável.
O PHP associa automaticamente um tipo de dado à variável, dependendo de seu valor. Como os tipos de dados não são definidos em sentido estrito, você pode fazer coisas como adicionar uma string a um inteiro sem causar um erro.
No PHP 7, foram adicionadas declarações de tipo. Isso nos dá uma opção para especificar o tipo de dados esperado ao declarar uma função e, adicionando a strict
declaração, ele lançará um "Erro Fatal" se o tipo de dados não corresponder.
No exemplo a seguir, tentamos enviar um número e uma string para a função sem usar strict
:
Exemplo
<?php
function addNumbers(int $a, int $b) {
return $a
+ $b;
}
echo addNumbers(5, "5 days");
// since strict is NOT enabled "5 days" is
changed to int(5), and it will return 10
?>
Para especificar strict
, precisamos definir declare(strict_types=1);
. Isso deve estar na primeira linha do arquivo PHP.
No exemplo a seguir, tentamos enviar um número e uma string para a função, mas aqui adicionamos a strict
declaração:
Exemplo
<?php declare(strict_types=1); // strict requirement
function
addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5
days");
// since strict is enabled and "5 days" is not an integer, an
error will be thrown
?>
A strict
declaração força as coisas a serem usadas da maneira pretendida.
Valor do argumento padrão do PHP
O exemplo a seguir mostra como usar um parâmetro padrão. Se chamarmos a função setHeight() sem argumentos, ela recebe o valor padrão como argumento:
Exemplo
<?php declare(strict_types=1); // strict requirement
function setHeight(int $minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
?>
Funções PHP - Retornando valores
Para permitir que uma função retorne um valor, use a return
instrução:
Exemplo
<?php declare(strict_types=1); // strict requirement
function sum(int $x,
int $y) {
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>
Declarações de tipo de retorno PHP
O PHP 7 também suporta declarações de tipo para a return
instrução. Assim como na declaração de tipo para argumentos de função, ao habilitar o requisito estrito, ele lançará um "Erro Fatal" em uma incompatibilidade de tipo.
Para declarar um tipo para o retorno da função, adicione dois pontos (
:
) e o tipo logo antes do colchete ( ) de abertura {
ao declarar a função.
No exemplo a seguir, especificamos o tipo de retorno para a função:
Exemplo
<?php declare(strict_types=1); // strict requirement
function addNumbers(float
$a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>
Você pode especificar um tipo de retorno diferente dos tipos de argumento, mas certifique-se de que o retorno seja o tipo correto:
Exemplo
<?php declare(strict_types=1); // strict requirement
function addNumbers(float
$a, float $b) : int {
return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
?>
Passando Argumentos por Referência
No PHP, os argumentos geralmente são passados por valor, o que significa que uma cópia do valor é usada na função e a variável que foi passada para a função não pode ser alterada.
Quando um argumento de função é passado por referência, as alterações no argumento também alteram a variável que foi passada. Para transformar um argumento de função em uma referência, o &
operador é usado:
Exemplo
Use um argumento de passagem por referência para atualizar uma variável:
<?php
function add_five(&$value) {
$value += 5;
}
$num
= 2;
add_five($num);
echo $num;
?>