ThinkPHP里面是不是不能用内部函数?

function toShow()
{
   function show()
   {
       ;
   }
   show();
}

会导致:

:(
Cannot redeclare CommonObjectshow() (previously declared in
C:wampwwwCCDCCommonObjectWorkFlow.class.php:163)

好像是只要在一次请求中,有多次调用toShow方法就会出现这种情况。是thinkphp3.2版本。

阅读 2.5k
2 个回答

php不能(在同一命名空间里)重复定义同名函数,和tp无关。

想做函数里的“内部”函数,用匿名函数吧。

可以考虑把函数封装在数组内.

$func = array(
    'foo' => function($arg){return $arg;},
    'bar' => function($arg){return $arg;}
);
echo call_user_func_array($func['foo'], array('php'));
echo call_user_func_array($func['bar'], array('best'));
//输出 phpbest
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题