php: могу ли я создать и вызвать функцию внутри метода класса?
можно ли создать функцию внутри метода класса, и как я это назову ?
то есть
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 ответов
Это можно сделать, но поскольку функции определены в глобальной области, это приведет к ошибке, если метод вызывается дважды, так как движок PHP будет считать функцию переопределенной во время второго вызова.
да. Начиная с 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;
}
}
}
использовать "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;
}
}
}