
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
PHP Variable Functions
Introduction
If name of a variable has parentheses (with or without parameters in it) in front of it, PHP parser tries to find a function whose name corresponds to value of the variable and executes it. Such a function is called variable function. This feature is useful in implementing callbacks, function tables etc.
Variable functions can not be built eith language constructs such as include, require, echo etc. One can find a workaround though, using function wrappers.
Variable function example
In following example, value of a variable matches with function of name. The function is thus called by putting parentheses in front of variable
Example
<?php function hello(){ echo "Hello World"; } $var="Hello"; $var(); ?>
Output
This will produce following result. −
Hello World
Here is another example of variable function with arguments
Example
<?php function add($x, $y){ echo $x+$y; } $var="add"; $var(10,20); ?>
Output
This will produce following result. −
30
In following example, name of function to called is input by user
Example
<?php function add($x, $y){ echo $x+$y; } function sub($x, $y){ echo $x-$y; } $var=readline("enter name of function: "); $var(10,20); ?>
Output
This will produce following result. −
enter name of function: add 30
Variable method example
Concept of variable function can be extended to method in a class
Example
<?php class myclass{ function welcome($name){ echo "Welcome $name"; } } $obj=new myclass(); $f="welcome"; $obj->$f("Amar"); ?>
Output
This will produce following result. −
Welcome Amar
A static method can be also called by variable method technique
Example
<?php class myclass{ static function welcome($name){ echo "Welcome $name"; } } $f="welcome"; myclass::$f("Amar"); ?>
Output
This will now throw exception as follows −
Welcome Amar