Методы PHP, которые всегда вызываются - PullRequest
4 голосов
/ 27 декабря 2010

В настоящее время я работаю над собственной PHP-MVC-Framework (только для ознакомления).

Мой вопрос: можно ли вызывать определенную функцию или метод каждый раз, когда метод класса был назван?

Например:

public function view($id) {
     //Code ...
     $this->view->render(__FUNCTION__);
}

То, что я хочу, это:

public function view($id) {
    //Code ...
    //render-method is called automatically with functionname as parameter
}

Я пробовал разные методы ... но безуспешно. Было бы здорово, если бы кто-то мог помочь мне с этим.

Cheers, Chris

Ответы [ 3 ]

5 голосов
/ 27 декабря 2010

Вы можете использовать Магические методы Достигните этого поведения:

public function __call($func, $args) {
  if(!method_exists($this, $func)) {
    return;
  }

  // do some coding here
  call_user_func_array($func,$args);
  // do some coding there
}

private function view($arg1, $arg2) {
  // and here
}

Помните: функция просмотра должна быть закрытой / защищенной.

$obj->view("asdasd", "asdsad");

Должен делать :: __ call (), затем метод :: view ()

1 голос
/ 27 декабря 2010

Вы можете использовать метод обертки.Вызовите этот метод и передайте все остальное в качестве параметров.

1 голос
/ 27 декабря 2010

Вы можете создать функцию в качестве связующего звена, используя способность PHP использовать значения переменных для целей выполнения.например:

function call($func,$param)
{
    $this->$func($param);
    $this->render($func);
}

$myObj->call('view',$id);
...