PHP variable function is a variable that is used to assign a function name with parentheses (). However, the PHP interpreter checks if it contains a callback or a function which should exist in the PHP project. If it doesn’t exist, the interpreter will produce an error.
Table of Content
Let’s see how to do that.
How to Assign a Function to Variable using PHP
According to this concept, PHP allow us to write a string inside a variable which can be called later as a function callback. Here is an example.
$func = "codedtag";
function codedtag() {
echo "Welcome to CodedTag.com Tutorials.";
}
$func(); // Welcome to CodedTag.com Tutorials.
In this example, I assigned a string value to the variable $func, which contains the function name codedtag. Then, I defined the function with the same name as this string.
In the following line, I called the variable as a function $func(). However, when the interpreter reads it, it will connect the parentheses () with the string inside the variable and consider it as a callback.
Additionally, the PHP interpreter will consider this as a variable function, so if the function is not found during execution, the interpreter will stop executing the code immediately and show you an error message.
Here’s an example to demonstrate this scenario.
$func = "calling_func";
$func();
In this example, I called an undefined function, which is calling_func. That means PHP has to execute this function, calling_func(). But it is not defined yet in the document. So, it will show you the following error.
Fatal error: Uncaught Error: Call to undefined function calling_func() in /tmp/index.php:4 Stack trace: #0 {main} thrown in /tmp/index.php on line ..
Anyway, let’s focus on another aspect of PHP variable functions, which involves the functions inside a class.
Assign a PHP Function of Class as a Variable
In PHP, you can also use the methods of a class as variables with parentheses to call them once an instance of the class is created.
Here is an example:
class team {
public function group() {
echo "Our team is ready to start the challenge";
}
}
$obj = new team();
$group = "group";
$obj->$group();
In this example, we can see that the $group variable stores the name of the method, which can be called by using parentheses.
But, what if the method inside the class contains a static property? Let’s see how it works with the example below.
class team {
public static function group() {
echo "Our team is ready to start the challenge";
}
}
$obj = new team();
$group = "group";
$obj::$group();
One way to call the function using the variable name as a function name is by using the scope resolution operator like this: $obj::$group().
Moreover, there is another method that works on PHP 5.4 and above. It allows us to use a complex callback. For example:
$obj = new team();
$group = array($obj, "group");
$group();
Let’s see how it works with the static method.
class team {
public static function group() {
echo "Static Method.";
}
}
$group = array( "team", "group");
$group();
In both of these examples, the array acts as a function by implementing the class object, with the function being callable once it finds that the main variable has parentheses.
You learned how to assign a function to a PHP variable, but how to pass arguments within? Let’s focus on this in the following section.
Variable Function and Arguments
You can follow the same approach and pass the arguments into the parentheses of the variable function.
$array = array( "item 1", "item 2", "item 3" );
$func = "count";
echo $func($array); // 3
In the above example, the $func variable contains the string name “count”. When invoked with parentheses, PHP looks for the count() function, which requires a countable element as an argument.
However, some PHP predefined callbacks, such as language constructs (e.g., require, empty, include, isset, print, unset, and echo), will not work with variables.
Here is an example:
$value = "Not Empty";
$is_empty = "empty";
var_dump($is_empty());
This will show you a fetal error in PHP like the below.
Fatal error: Uncaught Error: Call to undefined function empty()
Anyway, Let’s summarize it.
Wrapping Up
During this tutorial, you learned what variable functions are and how to use them with a class, static methods, and more. Here is the explanation in a few points:
- The variable functions in PHP lets you use a variable as a function name. You assign the name of a function to a variable. And then, you call it with parentheses.
- Assign
"codedtag"to a variable$func. Define a functioncodedtag(). Call$func()to executecodedtag(). - If the assigned function doesn’t exist, PHP stops. It shows a fatal error. This means the function is undefined.
- You can assign methods from a class to variables. Call these methods through the variable. Use the scope resolution operator (
::) for static methods. - Variable functions can take arguments. Include them within the calling parentheses.
- Some PHP constructs like
requireandemptycan’t be variable functions. Trying this results in a fatal error.
Thank you for reading. Happy Coding!
Similar Reads
A PHP script can break the page or allow code injection if it outputs user input directly into HTML. The…
Developers use the array_count_values function in PHP to find how many times each value appears in an array. What is…
Classes and objects are important parts of OOP in PHP. They help you organize your code so you can update…
PHP arrays are lists or maps that contain multiple values grouped by array keys. They may include integers, strings, booleans,…
PHP $_SERVER is a superglobal. It’s a predefined variable containing information about your server, client, and request environment. As a…
In some cases, you need to handle a lot of data or simply try to open a file, or read…
The array_column function in PHP takes values from one column in a multidimensional array. You can use it to pull…
The PHP named arguments are the names of the arguments through which the values are passed, allowing you to add…
Deleting records in MongoDB is a common task. You might need to clear old data, remove outdated entries, or handle…
Perhaps you're new to PHP or sharpening your skills and looking to understand how numbers work within this language under…