Programação Funcional em PHP: do A ao Z — guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução à programação funcional em PHP



Programação funcional (PF) é um paradigma no qual os cálculos são tratados como a avaliação de funções matemáticas, evitando a mudança de estado e dados mutáveis. Embora o PHP tenha sido originalmente criado como uma linguagem imperativa, a partir da versão 5.3 (2009), foram adicionadas ferramentas poderosas para o estilo funcional: funções anônimas, closures, suporte a funções de alta ordem e muito mais.



Neste artigo, abordaremos todos os conceitos-chave da programação funcional em PHP — desde funções anônimas básicas até técnicas avançadas como currying e composição de funções. Você aprenderá a escrever um código mais limpo, previsível e testável.



1. Funções anônimas e closures



Funções anônimas



Uma função anônima (lambda) é uma função sem nome. Ela pode ser atribuída a uma variável, passada como argumento ou retornada de outra função.



<?php// Função anônima comum$square = function($n) {    return $n * $n;};

echo $square(5); // 25

// Função anônima como callback para array_map$numbers = [1, 2, 3, 4];$squared = array_map(function($n) { return $n * $n;}, $numbers);

print_r($squared); // [1, 4, 9, 16]?>


Closures



Uma closure é uma função anônima que pode capturar variáveis do escopo externo usando a palavra-chave use. Este é um dos recursos mais poderosos da PF em PHP.



<?php$multiplier = 3;

$multiply = function($n) use ($multiplier) { return $n * $multiplier;};

echo $multiply(10); // 30

// Variável mutável (passada por referência)$counter = 0;$increment = function() use (&$counter) { $counter++;};

$increment();$increment();echo $counter; // 2?>


2. Funções puras e imutabilidade de dados



Funções puras



Uma função pura é uma função que:

  • Sempre retorna o mesmo resultado para os mesmos argumentos (determinística)
  • Não tem efeitos colaterais (não altera variáveis externas, não imprime dados, não interage com o banco de dados)


<?php// NÃO é uma função pura (depende de uma variável global)$taxRate = 0.2;function calculatePriceDirty($price) {    global $taxRate;    return $price * (1 + $taxRate);}

// Função purafunction calculatePricePure($price, $taxRate) { return $price * (1 + $taxRate);}

echo calculatePricePure(100, 0.2); // 120 — sempre previsível?>


Imutabilidade



Na PF, é comum não modificar dados existentes, mas sim criar novos. Em PHP, você pode usar objetos imutáveis ou simplesmente retornar novos arrays.



<?php// Ruim: modificar o array original$numbers = [1, 2, 3];array_push($numbers, 4); // mutação

// Bom: criar um novo array$numbers = [1, 2, 3];$newNumbers = array_merge($numbers, [4]);

// Função que retorna um novo arrayfunction addItem(array $arr, $item): array { $result = $arr; $result[] = $item; return $result;}

$original = [1, 2];$updated = addItem($original, 3);print_r($original); // [1, 2] — original não foi alteradoprint_r($updated); // [1, 2, 3]?>


3. Funções de alta ordem: array_map, array_filter, array_reduce



Funções de alta ordem são funções que recebem outras funções como argumentos ou as retornam. O PHP possui três funções-chave para trabalhar com arrays no estilo funcional.



array_map — transformação de elementos



<?php$users = [    ['name' => 'Alice', 'age' => 25],    ['name' => 'Bob', 'age' => 30],];

// Extraindo apenas os nomes$names = array_map(function($user) { return $user['name'];}, $users);

print_r(

Blogs

Book Recommendations