Theory
Functions
PHP 8.3.8
Core Concepts

Functions

Topic 6 of 13
PHP
<?php
// Named function with type hints + return type
function add(int $a, int $b): int {
    return $a + $b;
}

// Default parameters
function greet(string $name, string $prefix = "Hello"): string {
    return "$prefix, $name!";
}

// Variadic functions
function sum(int ...$nums): int {
    return array_sum($nums);
}
echo sum(1, 2, 3, 4);  // 10

// Named arguments (PHP 8) โ€” order-independent
greet(prefix: "Hey", name: "Nishu");

// Anonymous function (closure)
$double = function(int $n): int {
    return $n * 2;
};

// Arrow function (PHP 7.4) โ€” auto-captures outer scope
$multiplier = 3;
$triple = fn($n) => $n * $multiplier;

// Higher-order functions
$nums    = [1, 2, 3, 4, 5];
$evens   = array_filter($nums, fn($n) => $n % 2 === 0);
$doubled = array_map(fn($n) => $n * 2, $nums);
$total   = array_reduce($nums, fn($c, $n) => $c + $n, 0);

// First-class callables (PHP 8.1)
$fn = strlen(...);   // Closure from built-in
echo $fn("hello");   // 5