2011-06-07 82 views
1

如何根据定义的命名常量创建动态函数名称?php定义命名常量作为函数名称

如:

define('NAME1','func1'); 

function NAME1($arg) { 
    echo "function 1 $arg\n"; 
    print __FUNCTION__." in ".__FILE__." at ".__LINE__."\n"; 
}; 

NAME1("helllo"); 

这个回声函数的名称为 “NAME1” - 它为什么FUNC1?

+0

常量和函数具有单独的标识符查找表。 – mario 2011-06-07 03:21:09

+3

设计方面,这看起来像一个坏主意™。什么是用例? – deceze 2011-06-07 03:32:25

回答

4

,我能想到的最接近的事就是用PHP 5.3 anonymous functions(除使用eval

define('NAME1', 'my_function'); 
$func_name = NAME1; 
$$func_name = function($arg) { 
    // Your code 
}; 
$my_function('test'); 
+6

丑。不是吗? :) – Nemoden 2011-06-07 03:18:01

1

你不能做到这一点。

this echos function name as "NAME1" - why is it not func1? 

,因为你定义的函数名作为NAME1