Entender funções PHP é uma parte essencial do aprendizado de PHP. É um dos recursos mais poderosos que a linguagem de programação tem a oferecer. No guia a seguir, abordaremos tudo o que você precisa saber sobre funções no PHP 8.0 – a versão mais recente até o momento. Descobriremos como as funções funcionam, para que você pode usá-las e como criar as suas próprias.
O que são funções PHP?
Em programação, uma função é basicamente uma abreviação para um pedaço reutilizável de código que executa uma tarefa específica. Se você atribuir um trecho de código a uma função, você pode então executar a coisa toda chamando a função apenas pelo seu nome, o que é muito mais rápido e conveniente do que digitar os trechos de código toda vez.
Vamos rever a sintaxe básica das funções PHP para deixar isso mais claro. Aqui está um exemplo:
função example_function() {
echo 'Esta é uma função de exemplo.';
}
Esta função faz uma coisa muito simples. Quando executada, ela imprimirá "This is an example function." na tela.
Em PHP, você pode criar uma função, assim como acima, usando a palavra-chave function , seguida pelo nome que você quer atribuir à função. O que quer que você coloque entre as chaves será executado no seu documento PHP toda vez que você incluir uma chamada para a função.
Neste caso, a chamada de função se parece com isto:
função_exemplo()
Bem mais curto que o original, certo?
Os benefícios das funções PHP
Mas por que você deveria passar pelo problema de definir funções em primeiro lugar, em vez de simplesmente usar o código PHP por si só? Bem, usar funções oferece dois benefícios importantes:
- Simplificação – Um dos principais benefícios é que as funções permitem que você use os trechos de código que elas contêm onde e quantas vezes quiser – basta chamar a função e pronto. Então, as funções tornam a codificação muito mais fácil, em comparação a redigitar ou copiar e colar o próprio trecho, e ajudam a reduzir a repetição. A função nem precisa estar no mesmo arquivo, desde que você importe sua fonte.
- Centralização – Imagine que você descobre que há um erro em um pedaço de código que você usa muito. Se ele for colocado dentro de uma função, você só precisa corrigi-lo uma vez onde a função é definida. Por outro lado, ao usar o próprio trecho de código, você precisa corrigir cada instância dele separadamente. Consequentemente, as funções PHP tornam seu código mais simples de manter e também facilitam a detecção de onde exatamente o erro está.
Como você pode ver, há algumas razões muito boas para usar funções em vez de código nu. A seguir, vamos dar uma olhada em mais alguns recursos e características das funções PHP.
Tipos de funções PHP
Existem vários tipos de funções PHP. Por exemplo, abaixo daremos uma olhada em funções recursivas. No entanto, no nível mais básico, há apenas dois tipos principais: funções PHP internas e funções definidas pelo usuário.
Funções Integradas
O primeiro tipo são funções que são incorporadas ao PHP. Elas incluem ferramentas que permitem que você trabalhe e manipule variáveis, arrays e strings sobre funções de data e hora, funções para capturar e exibir erros e funções que permitem que você acesse um banco de dados MySQL e muito mais.
Eles estão disponíveis para todos os usuários PHP e podem executar tarefas como contar o número de letras em uma string ou combinar ou dividir grupos de variáveis. echo() , que usamos no exemplo acima, também é uma função. Outros exemplos incluem:
- gettype() – Recupera o tipo de uma variável.
- print_r() – Exibe informações sobre uma variável que são legíveis para humanos.
- var_dump() – Despeja informações sobre uma variável.
Se você quiser saber mais sobre funções PHP internas, você pode ler sobre elas na documentação do PHP . Você também pode encontrar uma coleção das funções mais básicas em nossa folha de dicas do PHP .
Funções definidas pelo usuário
Felizmente, você não está limitado apenas às ferramentas que já são inerentes ao PHP. Se você precisa de algo sob medida, é possível criar facilmente suas próprias funções. Na verdade, se você estiver usando PHP para criar sites, é provável que você gaste muito tempo fazendo isso.
Se você já usou um CMS como o WordPress, sabe que ele vem com muitas funções próprias, específicas do WordPress. Por exemplo, você pode usar the_title() nos seus modelos de página para gerar o título do post atual.
No entanto, isso só funciona porque o conteúdo dessa função foi definido em wp-includes/post-template.php . Quando você der uma olhada nesse arquivo, aqui está o que você encontrará:
função the_title( $antes = '', $depois = '', $echo = true ) {
$title = obter_o_título();
se ( strlen( $title ) == 0 ) {
retornar;
}
$title = $antes. $title. $depois;
se ( $echo ) {
eco $título;
} outro {
retornar $título;
}
}
Você só pode usar essa função em seus arquivos porque o trecho de código acima existe. Como funções definidas pelo usuário são um tópico tão crucial, o restante deste artigo dará uma olhada detalhada em como criar suas próprias funções PHP.
Como você constrói funções em PHP?
Como visto acima, esta é a sintaxe básica para criar funções definidas pelo usuário:
função nome_da_função() {
// o código a ser executado vai aqui
}
nome_da_função();
No entanto, o diabo mora nos detalhes, então vamos analisar alguns pontos mais sutis com mais detalhes.
O nome da função
Vamos começar com como nomear suas próprias funções. Primeiro, um nome de função precisa começar com uma letra ou sublinhado e não pode começar com um número. É costume separar palavras com sublinhados (por exemplo, my_php_function() ), embora algumas pessoas também usem camelCase e PascalCase . Nomes de funções também não diferenciam maiúsculas de minúsculas, então escrever My_PHP_Function() e my_php_function() não faz diferença – ainda é a mesma função.
Além disso, é uma boa ideia usar um nome que descreva o que sua função faz. Isso tornará muito mais fácil de entender para outras pessoas que lerem seu código ou até mesmo para você mesmo se voltar a ele depois de um longo tempo. É um tipo de autodocumentação.
Normalmente, para conseguir isso, você começará o nome da função com um verbo como remove_post_meta() ou register_sidebar() . Ao trabalhar em um ambiente como o WordPress, que tem muitas funções integradas, também é comum iniciar todas as suas funções personalizadas com um identificador como suas iniciais, para evitar usar acidentalmente um nome existente. Aqui está um exemplo: xyz_register_sidebar() .
Parâmetros e Argumentos
Você pode ter notado os parênteses no final do nome da função, que parecem não servir a nenhum propósito até agora. Na verdade, eles têm um propósito – é onde você pode incluir parâmetros ou argumentos, que é algo que as funções PHP podem conter. Eles são semelhantes a variáveis e permitem que você passe adiante e trabalhe com informações específicas.
Veja como usá-los:
função combine_strings($string1, $string2) {
eco $string1 . ' ' . $string2;
}
Ao configurar sua função, eles são chamados de parâmetros – o exemplo acima tem dois deles. Quaisquer duas strings que você colocar aqui na chamada da função, a função as combinará em uma única frase com um espaço no meio.
Quando você usa seus próprios parâmetros na chamada de função, eles são chamados de argumentos; no entanto, são essencialmente a mesma coisa.
combine_strings('Olá', 'mundo!'); // saída: "Olá, mundo!"
Em teoria, você pode usar um número ilimitado de parâmetros, basta separá-los com vírgulas.
Usando valores padrão
Também é possível definir um valor padrão para um argumento. Dessa forma, quando nada é definido na chamada da função, ela tem algo para recorrer. Isso pode ser útil para evitar lançar um erro (se a função não funcionar sem um valor de argumento) ou quando um determinado valor é geralmente o mesmo.
Podemos criar outro exemplo alterando ligeiramente a função acima:
função combine_strings($string1, $string2, $espaçamento = ' ') {
eco $string1 . $espaçamento . $string2;
}
combine_strings('Olá', 'mundo!');
É basicamente o mesmo que antes e produzirá a mesma saída. No entanto, neste caso, substituímos o espaço simples de cima por outro parâmetro que agora tem o espaço como seu valor padrão, levando à mesma saída.
Você também pode notar que na chamada de função, inserimos apenas dois parâmetros. Isso é bom neste caso, porque o terceiro parâmetro ( $spacing ) já tem um valor padrão que a função usará se nada mais for definido na chamada.
Então, quando você usa parâmetros padrão, é uma boa ideia colocá-los depois de parâmetros que não têm valores padrão (também conhecidos como parâmetros obrigatórios). Caso contrário, pode facilmente ser confuso e causar comportamento ou erros não intencionais. Além disso, desde o PHP 8.0, colocar parâmetros padrão antes de parâmetros obrigatórios resultará em um erro de descontinuação.
Por exemplo, a função abaixo aciona um aviso de descontinuação e causa um erro fatal, porque 'Hello!' e 'world!' correspondem aos parâmetros $spacing e $string1, enquanto o terceiro parâmetro ( $string2 , que é um parâmetro obrigatório) não é preenchido ao chamar a função:
função combine_strings($espaçamento = ' ', $string1, $string2) {
eco $string1 . $espaçamento . $string2;
}
combine_strings('Olá', 'mundo!');
Dicas de tipo PHP
Quando você declara os parâmetros de uma função PHP ou define uma variável, a linguagem de programação normalmente descobrirá que tipo de dado ela contém por si só. Você não precisa dizer explicitamente se é um número/um inteiro, uma string ou outra coisa. O PHP fará o melhor com as informações que você fornecer a ele.
No entanto, você também pode definir o tipo de dado esperado ao declarar uma função, usando a palavra-chave strict . Dessa forma, se a entrada não corresponder, o PHP não tentará "fazer funcionar", mas, em vez disso, lançará um erro. É assim que funciona:
declarar(strict_types=1);
função combine_strings(string $string1, string $string2, string $espaçamento = ' ') {
eco $string1 . $espaçamento . $string2;
}
combine_strings('Olá', 5);
Primeiro de tudo, para usar strict , você precisa incluir declare(strict_types=1) no topo do seu arquivo PHP, caso contrário, não terá efeito. Segundo, observe que os parâmetros da função são todos prefixados com string para dizer à função que ela deve esperar texto aqui, não um número. Como a chamada de função na parte inferior diz 5 como seu segundo parâmetro, o código acima emitirá um erro.
Você também pode usar strict para definir o tipo de valor que uma função retornará. Isso é útil, por exemplo, ao calcular floats (números com ponto decimal) e você quer que a função retorne inteiros (números inteiros). Mais sobre retorno de valores abaixo.
Argumentos Nomeados
Desde a versão 8.0, o PHP permite que você use argumentos nomeados para funções. Eles permitem que você use argumentos dependendo de seus nomes, não apenas da ordem em que são apresentados.
Usando o exemplo anterior, você pode eliminar possíveis armadilhas simplesmente usando nomes de argumentos na chamada de função.
função combine_strings($string1, $string2, $espaçamento = ' ') {
eco $string1 . $espaçamento . $string2;
}
combinar_strings(
$string1 = 'Olá',
$string2 = 'mundo!'
);
Note que não faz nenhuma diferença em qual ordem você usa os nomes dos argumentos na chamada de função – usar nomes cria a saída correta de qualquer forma. Além disso, preste atenção em como não especificamos $spacing . Isso porque ele já tem um valor padrão, nesse caso você pode ignorá-lo.
Também é possível usar argumentos posicionais junto com argumentos nomeados. A única ressalva aqui é que você precisa colocar argumentos nomeados depois dos posicionais, caso contrário o PHP lançará um erro. A chamada de função abaixo não funcionará porque os argumentos nomeados aparecem antes dos argumentos posicionais.
combinar_strings(
$string2 = 'mundo!',
'Olá'
);
Em vez disso, a maneira correta de chamar essa função seria:
combinar_strings(
'Olá',
$string2 = 'mundo!'
);
Passando argumentos por referência
Nos exemplos acima, passamos argumentos por valor, que é o comportamento padrão no PHP. Isso basicamente significa que uma cópia do valor original é passada pela função, mas o valor original, como uma variável que você definiu, permanece intocado.
Em contraste, você também pode passar argumentos por referência. Nesse caso, o valor original passa pela função e é alterado por ela. Para isso, você precisa prefixar o argumento com um e comercial ( & ). Vamos dar uma olhada em um exemplo em que a função adiciona uma string ( $string1 ) a um valor definido ( $string2 ) quando a função é chamada.
função combine_strings(&$string1) {
$string1 .= ' e isso é o que é adicionado a ele.';
}
$string2 = 'Esta é minha frase original';
combinar_strings($string2);
eco $string2;
Neste exemplo, se você omitir o "e" comercial na frente do parâmetro da função, a saída será apenas "Esta é minha frase original" .
Isso ocorre porque o argumento é alterado fora da função, ou seja, na chamada da função (com a linha combine_strings($string2); ), e é por isso que o parâmetro de função definido originalmente ( $string1 .= ' and this is what gets added to it.'; ) é sobrescrito. No entanto, passar $string1 por referência evita isso, então se você adicionar o operador & , o valor que já está presente na função é preservado.
A declaração de retorno
Usar a instrução return permite que você faça com que funções PHP retornem um valor. Isso significa que o valor volta para a parte do programa que o chamou inicialmente. A função então conterá o valor para que você possa chamá-lo e exibi-lo onde quiser.
Veja como isso se parece:
função combine_strings($string1, $string2, $espaçamento = ' ') {
retornar $string1 . $espaçamento . $string2;
}
$variável = combine_strings('Olá', 'mundo!');
eco $variável;
Novamente, isso está fazendo a mesma coisa que fizemos antes (que é a saída "Hello world!" ). No entanto, neste caso, estamos combinando as strings e armazenando-as na função. A partir daí, você pode ecoar o resultado sempre que quiser, em vez de imediatamente e automaticamente na chamada da função.
O valor retornado pode ser de qualquer tipo, incluindo arrays e objetos. A instrução return também encerra a função e a impede de executar mais.
Usando HTML em funções
Embora estejamos usando PHP, é completamente possível usar HTML dentro de funções. Na verdade, isso acontece muito quando você usa WordPress ou outro CMS baseado em PHP. A linguagem de programação roda em segundo plano, mas quando alguém solicita ver uma página, ela gera HTML que o navegador pode ler.
Aqui está um exemplo de como isso pode ser:
função combine_strings($string1, $string2, $espaçamento = ' ') {
eco '<h1>' . $string1 . $espaçamento . $string2 . '</h1>';
}
combine_strings('Olá', 'mundo!');
Acima, temos nosso exemplo familiar, só que dessa vez a saída da string é adicionalmente encapsulada em colchetes <h1> . Como resultado, a página da web exibirá "Hello world!" como o título H1.
Escopo da variável: variáveis locais e globais
Embora não esteja diretamente relacionado às funções PHP, o escopo da variável é algo relevante para este tópico. O escopo é basicamente o contexto no qual uma variável está disponível, que pode ser local ou global.
Todas as variáveis que você define somente dentro de uma função são automaticamente locais e só podem ser usadas dentro dessa função.
função combine_strings() {
$string1 = 'Olá';
$espaçamento = ' ';
$string2 = 'mundo!';
eco $string1 . $espaçamento . $string2;
}
combinar_strings();
No exemplo acima, $string1 , $spacing e $string2 têm escopo local porque foram definidos dentro da função.
Por outro lado, variáveis definidas fora de funções são globais, o que significa que você não pode simplesmente acessá-las de dentro de funções. Por exemplo, isso não vai funcionar:
$string1 = 'Olá';
$espaçamento = ' ';
$string2 = 'mundo!';
função combine_strings() {
eco $string1 . $espaçamento . $string2;
}
combinar_strings();
Embora pareça que deveria, o snippet acima produzirá um erro "Variável indefinida" porque as variáveis não estão definidas dentro da função.
Além disso, o seguinte trecho de código ainda emitirá "Olá, mundo!", apesar das variáveis de função dizerem outra coisa:
$string1 = 'Olá';
$espaçamento = ' ';
$string2 = 'mundo!';
função combine_strings() {
$string1 = 'Olá';
$espaçamento = ' ';
$string2 = 'globo!';
}
combinar_strings();
eco $string1 . $espaçamento . $string2;
Embora as variáveis tenham os mesmos nomes, porque um grupo delas é global em escopo e o outro é local, elas são tratadas como variáveis diferentes. Isso é para que não haja confusão entre variáveis que gerariam erros.
No entanto, se você quiser usar variáveis globais dentro de uma função, você pode fazer isso prefixando-as com a palavra-chave global . Isso torna a variável definida externamente disponível dentro da função.
$string1 = 'Olá';
$espaçamento = ' ';
$string2 = 'mundo!';
função combine_strings() {
$string1 global;
espaçamento global;
$string2 global;
eco $string1 . $espaçamento . $string2;
}
combinar_strings();
Há também algumas variáveis PHP internas chamadas superglobais, que são acessíveis de qualquer lugar. Alguns exemplos incluem $GLOBALS , $_SERVER e $_GET . Elas permitem que você recupere dados de diferentes arquivos, do navegador do usuário e muito mais. Para os propósitos deste post, não vamos nos aprofundar nelas porque esse é um tópico inteiro por si só. Mais sobre isso na documentação .
Funções recursivas
A última coisa que queremos abordar são as funções recursivas. Elas recebem esse nome pelo fato de que elas se chamam repetidamente até que uma certa condição seja satisfeita.
Elas são um pouco parecidas com loops. No entanto, funções recursivas são geralmente usadas para blocos de código mais curtos e loops para casos em que você precisa de trechos de código maiores.
Abaixo está uma função simples para imprimir "Hello world!" um número definido de vezes (conforme definido por $greetings ). A função se repetirá até atingir esse número.
função combine_strings($greetings){
$string1 = 'Olá';
$espaçamento = ' ';
$string2 = 'mundo!';
se ($saudações >= 1) {
eco $string1 . $espaçamento . $string2 . '<br>';
combine_strings($saudações - 1);
}
}
combinar_strings(8);
Considerações finais: Funções PHP
Funções PHP são algo com o qual você definitivamente precisa se familiarizar se quiser se tornar proficiente nessa linguagem de programação. Elas abrem amplas possibilidades para criar funcionalidades e escrever códigos mais poderosos.
O PHP já contém uma infinidade de funções internas que você pode usar para esse propósito. A verdadeira mágica, no entanto, acontece quando você aprende a criar suas próprias funções personalizadas. Isso abre possibilidades muito maiores e permite que você realmente use o poder do PHP.
Acima, você aprendeu tudo o que precisa para fazer isso acontecer – agora cabe a você fazer uso disso.
Qual é seu recurso favorito das funções PHP? Algo para acrescentar ao acima? Deixe-nos saber nos comentários!
Comentários (0)