考虑以下代码,这是一种将回调函数存储为成员然后使用的方案:

class MyClass {
  function __construct($callback) {
    $this->callback = $callback;
  }

  function makeCall() {
    return $this->callback();
  }
}

function myFunc() {
  return 'myFunc was here';
}

$o = new MyClass(myFunc);
echo $o->makeCall();

我希望myFunc was here被回显,但我得到:
Call to undefined method MyClass::callback()

谁能解释这是怎么回事,以及为了获得所需的行为我该怎么办?

万一重要,我使用的是PHP 5.3.13。

最佳答案

您可以将makeCall方法更改为此:

function makeCall() {
  $func = $this->callback;
  return $func();
}

关于php - 如何使用在PHP中作为类成员存储的回调函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12131349/

10-16 09:23