Difference between revisions of "PHP/function variable"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< PHP
Jump to navigation Jump to search
(Created page with "==About== A variable can store a reference to a function. The thing that isn't explained very well in the documentation is that this just consists of naming the function in a...")
 
Line 1: Line 1:
 
==About==
 
==About==
A variable can store a reference to a function. The thing that isn't explained very well in the documentation is that this just consists of naming the function in a callable way.
+
A variable can store a reference to a function, which can then be called from the variable.
 +
===Named Functions/Methods===
 +
The thing that isn't explained very well in the documentation is that if you want to assign a ''predefined'' function to a variable, you just use a string which is a callable/accessible form of the function.
 
<syntaxhighlight lang=php>
 
<syntaxhighlight lang=php>
 
function Example1() { echo "Example1 was called!\n"; }
 
function Example1() { echo "Example1 was called!\n"; }
Line 19: Line 21:
 
$fEx2(); // prints "Test1 was called!"
 
$fEx2(); // prints "Test1 was called!"
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
The variable can be used to call the function in exactly the same way as if it had been assigned an anonymous function.
 +
===Anonymous Functions===
 +
<syntaxhighlight lang=php>
 +
$fEx3 = function() { echo "Anonymous function was called!\n"; };
 +
$fEx3();  // prints "Anonymous function was called!"
 +
</syntaxhighlight>
 +
Unlike with predefined functions, however, the type for the variable is '''Callable''' rather than '''string'''.
 
==Documentation==
 
==Documentation==
 
* [https://www.php.net/manual/en/langref.php Language Reference]:
 
* [https://www.php.net/manual/en/langref.php Language Reference]:

Revision as of 17:38, 10 April 2022

About

A variable can store a reference to a function, which can then be called from the variable.

Named Functions/Methods

The thing that isn't explained very well in the documentation is that if you want to assign a predefined function to a variable, you just use a string which is a callable/accessible form of the function.

function Example1() { echo "Example1 was called!\n"; }

#$fEx1 = Example1;  // does not work; sees "Example1" as a constant
$fEx1 = 'Example1';

$fEx1();  // prints "Example1 was called!"
class cExample2 {
    static public function Test1() { echo "Test1 was called!\n"; }
}

#$fEx2 = cExample2::Test1;  // does not work; sees "Test1" as a class constant
$fEx2 = 'cExample2::Test1';
$fEx2(); // prints "Test1 was called!"

The variable can be used to call the function in exactly the same way as if it had been assigned an anonymous function.

Anonymous Functions

$fEx3 = function() { echo "Anonymous function was called!\n"; };
$fEx3();  // prints "Anonymous function was called!"

Unlike with predefined functions, however, the type for the variable is Callable rather than string.

Documentation