登录

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

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

会导致:

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

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

# PHP
PHPz PHPz 2393 天前 273 次浏览

全部回复(2) 我要回复

  • 迷茫

    迷茫2017-04-11 09:11:30

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

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

    回复
    0
  • PHPz

    PHPz2017-04-11 09:11:30

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

    $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

    回复
    0
  • 取消 回复 发送