PHP از مفهوم توابع متغیر پشتیبانی میذنماید. اگر یک نام متغیر بدون پرانتز به آن نوشته شود PHP بدنبال یک تابع با همان نام گشته وآن را بدون توجه به مقدار متغیر اجرا خواهد کرد. در میان چیرهای دیگر این قابلیت برای پیادهسازی callback جدول توابع و غیره مناسب است.
توابع متغیر در ساختارهای زبانی مانند echo() print() unset() isset() empty() include() require() و همانند آنها عمل نخواهد کرد. توابع پوشاننده را برای استفاده از این ساختارها به عنوان یک تابع متغیر استفاده نمایید.
Example #1 نمونه تابع متغیر
<?php
function foo() {
echo "In foo()<br />\n";
}
function bar($arg = '')
{
echo "In bar(); argument was '$arg'.<br />\n";
}
// This is a wrapper function around echo
function echoit($string)
{
echo $string;
}
$func = 'foo';
$func(); // This calls foo()
$func = 'bar';
$func('test'); // This calls bar()
$func = 'echoit';
$func('test'); // This calls echoit()
?>
یک متد شی میتواند از دستورات یک تابع متغیر نیز فراخوانی گردد.
Example #2 نمونه متد متغیر
<?php
class Foo
{
function Variable()
{
$name = 'Bar';
$this->$name(); // This calls the Bar() method
}
function Bar()
{
echo "This is Bar";
}
}
$foo = new Foo();
$funcname = "Variable";
$foo->$funcname(); // This calls $foo->Variable()
?>
همچنین call_user_func() متغیر متغیرها و function_exists() را ببینید.