call_user_func внутри функции в методе класса не работает - PullRequest
1 голос
/ 04 марта 2012

Мне нужно вызвать функцию, которая находится внутри другой функции внутри класса.

class Some_class extends CI_Controller {
    public function file($action){
        function add(){ 
            $content = "Content";
            $data = array('html'=>$content);
            $this->output->append_output(json_encode($data));
        }
        call_user_func($action);
    }
}

Это ничего не возвращает.

Мне нужно вызвать функцию add(),и не работает, даже если я просто поставлю add() вместо call_user_func().Но идея в том, чтобы вызывать каждую функцию внутри функции file().

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Хотя я никогда не использовал эту функцию лично, я считаю, что она не работает, потому что вы ничего не возвращаете.

Если функция $ action должна возвращать значение, напишите:

return call_user_func($action);

В противном случае (если он помещает значение в параметр), потребуется параметр, который будет работать примерно так:

call_user_func($action, $param);
return $param;

Возможно, я неправильно понимаю, что вы пытаетесьделай хоть.

1 голос
/ 04 марта 2012

Вы хотите передать обратный вызов . Скажите, что action - это метод MyClass. Вы бы тогда использовали:

$my_class = new MyClass();

call_user_func(array($my_class, 'action'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...