php:我可以在类方法中创建和调用函数吗?

m1k*_*3y3 10 php class function

是否可以在类方法中创建函数,如何调用它?

class Foo
{
    function bar($attr)
    {
       if($attr == 1)
       {
          return "call function do_something_with_attr($attr)";
       }
       else
       {
          return $attr;
       }

       function do_something_with_attr($atr)
       {
          do something
          ...
          ...
          return $output;
       }
    }
}

先感谢您

Rus*_*ins 9

是.从PHP 5.3开始,您可以使用匿名函数:

class Foo
{
    function bar($attr)
    {
        $do_something_with_attr = function($atr)
        {
            //do something
            //...
            //...
            $output = $atr * 2;
            return $output;
        };

        if ($attr == 1)
        {
            return $do_something_with_attr($attr);
        }
        else
        {
            return $attr;
        }
     }
}
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 8

它可以完成,但由于函数是在全局范围内定义的,如果方法被调用两次将导致错误,因为PHP引擎将考虑在第二次调用期间重新定义函数.

  • @ m1k3y02:您不必在方法中声明全局函数.使用`protected`或`private`可见性声明其他方法,并使用`$ this`调用它们.除非你真的需要全球功能...... (4认同)
  • 它可以用trivia`function_exists()`来解决 (2认同)