【问题标题】:php defined named constant as a function namephp定义命名常量为函数名
【发布时间】:2011-06-07 03:11:20
【问题描述】:

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

例如:

define('NAME1','func1');

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

NAME1("helllo");

这将函数名称回显为“NAME1” - 为什么它不是 func1?

【问题讨论】:

  • 常量和函数有单独的标识符查找表。
  • 从设计角度看,这似乎是个坏主意™。用例是什么?

标签: php function constants


【解决方案1】:

我能想到的最接近的方法是使用PHP 5.3 anonymous functions(而不是使用eval

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

【讨论】:

    【解决方案2】:

    你不能这样做。

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

    因为您将函数名称定义为NAME1

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 2023-01-25
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 2013-03-20
      • 2011-12-18
      • 1970-01-01
      • 2013-06-03
      相关资源
      最近更新 更多