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

时间:2011-01-16 23:55:01

标签: 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;
       }
    }
}

提前谢谢

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:8)

是。从PHP 5.3开始,您可以使用anonymous functions

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;
        }
     }
}

答案 2 :(得分:1)

使用" function_exists"避免错误。

class Foo
{
    function bar($attr)
    {

       if (!function_exists("do_something_with_attr")){ 
           function do_something_with_attr($atr)
           {
              do something
              ...
              ...
              return $output;
           }
       }

       if($attr == 1)
       {
          return do_something_with_attr($attr);
       }
       else
       {
          return $attr;
       }


    }
}