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