$y = 1;
$fn1 = fn($x) => $x + $y;
// equivalent to using $y by value:
$fn2 = function ($x) use ($y) {
return $x + $y;
};
echo $fn1(5); # => 6
echo $fn2(5); # => 6
PHP Functions
Arrow Functions
Default parameters
function coffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}
# => Making a cup of cappuccino.
echo coffee();
# => Making a cup of .
echo coffee(null);
# => Making a cup of espresso.
echo coffee("espresso");
Recursive functions
function recursion($x)
{
if ($x < 5) {
echo "$x";
recursion($x + 1);
}
}
recursion(1); # => 1234
Anonymous functions
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World'); # => Hello World
$greet('PHP'); # => Hello PHP
Variable functions
function bar($arg = '')
{
echo "In bar(); arg: '$arg'.\n";
}
$func = 'bar';
$func('test'); # => In bar(); arg: test
Void functions
// Available in PHP 7.1
function voidFunction(): void
{
echo 'Hello';
return;
}
voidFunction(); # => Hello
Nullable return types
// Available in PHP 7.1
function nullOrString(int $v) : ?string
{
return $v % 2 ? "odd" : null;
}
echo nullOrString(3); # => odd
var\_dump(nullOrString(4)); # => NULL
See: Nullable types
Return types
// Basic return type declaration
function sum($a, $b): float {/\*...\*/}
function get\_item(): string {/\*...\*/}
class C {}
// Returning an object
function getC(): C { return new C; }
Returning values
function square($x)
{
return $x * $x;
}
echo square(4); # => 16
Comments