是否可以在类方法中创建函数,如何调用它?
即
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; } } }
提前谢谢
答案 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;
}
}
}