Den Dribbles

PHP Anonymous Functions

March 07, 2019

The basic gist is to use the keyword function() with a block scope.

If you want to use variables declared by the direct parent scope, ensure you use the use() keyword. A simple example of this can be found below.

Simple Example

// anon.php

<?php

function helloWorld()
{
    $anon = function() {
        return 'Hello, World!';
    };

    return $anon();
}

function sumTwoArgsPlusOne($a, $b)
{
    $c = 1;
    $anon = function($a, $b) use ($c) {
        return $a + $b + $c;
    };

    return $anon($a, $b);
}
// anon_test.php

<?php

require "anonymous.php";

class AnonymousTest extends PHPUnit\Framework\TestCase
{
    public function testHelloWorld()
    {
        $this->assertEquals('Hello, World!', helloWorld());
    }

    public function testSum()
    {
        $this->assertEquals(4, sumTwoArgsPlusOne(1, 2));
    }
}

A personal blog on all things of interest. Written by Dennis O'Keeffe, Follow me on Twitter