Open In App

PHP Arrow Functions

Last Updated : 15 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In the development, developers used to face problems like writing long code for simple tasks, needing to manually capture variables with use, and having less readable functions. PHP arrow functions solve this by providing a shorter syntax, automatically capturing variables from the parent scope, and making the code cleaner, simpler, and easier to understand.

In this article, we will discuss PHP arrow functions and how they differ from regular anonymous functions.

What are PHP Arrow Functions?

PHP arrow functions are a shorthand syntax for anonymous functions. PHP was introduced in PHP 7.4, which provides a shorter way to write anonymous functions. They allow you to create functions with fewer lines of code while maintaining functionality. They provide an easy-to-read syntax, particularly for small, concise operations.

Both arrow functions and regular anonymous functions are implemented using the Closure class in PHP. The Closure class represents a function and its enclosed environment, allowing access to variables from the surrounding scope.

Syntax:

fn (argument_list) => expr

In this syntax:

  • fn: The keyword used to define the arrow function.
  • argument_list: A list of parameters for the function (just like regular functions).
  • expr: A single expression that will be returned by the function.

Now, let us understand with the help of the example:

PHP
<?php
$add = fn($a, $b) => $a + $b;
echo $add(3, 4); 
?>

Output
7

In this example:

  • The function fn($a, $b) => $a + $b adds two numbers.
  • The function is assigned to the $add variable.
  • We invoke the function using $add(3, 4), which returns 7.

Key Features of PHP Arrow Functions

Arrow Functions Capture Variables by Value Automatically

The feature of PHP arrow functions is that they automatically capture variables from the parent scope by value. This means that when a variable is used inside an arrow function, it is implicitly captured by its value from the surrounding scope.

You do not need to explicitly use the use keyword as you would in regular anonymous functions.

Now, let us understand with the help of the example:

PHP
<?php
$y = 1;
$fn1 = fn($x) => $x + $y;
$fn2 = function ($x) use ($y) {
    return $x + $y;
};
var_export($fn1(3)); 
echo "\n";
var_export($fn2(4))
?>

Output
4
5

In this example:

  • The arrow function $fn1 automatically captures the $multiplier variable from the surrounding scope.
  • The regular anonymous function $fn2 needs to explicitly capture $multiplier using the use keyword.

Arrow Functions Capture Variables by Value Automatically, Even When Nested

Arrow functions in PHP not only capture variables from the parent scope, but they also capture them by value automatically, even when the functions are nested. This behavior makes it easier to work with nested functions without needing additional syntax to pass variables between them.

Now, let us understand with the help of the example:

PHP
<?php
$z = 3;
$fn = fn($x) => fn($y) => $x * $y + $z;
var_export($fn(4)(10));
?>

Output
43

In this example:

  • The outer arrow function captures $x and $z by value from the parent scope.
  • The inner arrow function captures $y and uses the values of $x and $z automatically.

Values from the Outer Scope Cannot Be Modified by Arrow Functions

While arrow functions can automatically capture variables from the outer scope by value, they cannot modify those captured values. This is an important difference between arrow functions and regular anonymous functions, which can modify variables from the outer scope (if passed by reference).

Now, let us understand with the help of the example:

PHP
<?php
$x = 10;
$fn = fn() => $x--; // Has no effect
$fn();
var_export($x);  // Outputs 10
?>

Output
10

In this example:

  • The arrow function tries to decrement $x, but because $x is captured by value, the modification does not affect the original value of $x in the parent scope.
  • After the function is called, $x remains 10.

Benefits of Using PHP Arrow Functions

  • Concise Syntax: Arrow functions provide a cleaner and more simple syntax compared to regular anonymous functions.
  • Automatic Variable Capture: You don’t need to explicitly capture variables from the outer scope, which reduces boilerplate code.
  • Improved Readability: The shorter syntax improves code readability, especially for simple functions.
  • Performance: Although the performance difference between regular anonymous functions and arrow functions is minimal, the concise nature of arrow functions often makes them more efficient in terms of writing and maintaining code.

Limitations of PHP Arrow Functions

  • Single Expression Only: Arrow functions can only contain a single expression, so you cannot use them for more complex logic that requires multiple statements.
  • Limited to Simple Operations: Because of the restriction to a single expression, arrow functions are suitable for simple operations but not for those that require detailed processing or error handling.

Arrow Functions vs Anonymous Functions

Below are the differences between arrow functions and anonymous functions.

Arrow Functions

Anonymous Function

fn (arguments) => expression;

function (arguments) { /* statements */ }

Automatically captures variables from the parent scope by value. No need for use.

Requires the use keyword to capture variables from the parent scope.

Ideal for short, single-expression operations.

Suitable for complex logic and multiple statements.



Next Article

Similar Reads