PHP:在类外定义的回调函数中的访问类方法

时间:2018-01-24 06:18:53

标签: php class callback

我有一个像

这样的课程
public func LS(_ key: String) -> String {
    let value = NSLocalizedString(key, comment: "")
    if value != key || NSLocale.preferredLanguages.first == "en" {
        return value
    }

    // Fall back to en
    guard
        let path = Bundle.main.path(forResource: "en", ofType: "lproj"),
        let bundle = Bundle(path: path)
        else { return value }
    return NSLocalizedString(key, bundle: bundle, comment: "")
}

当我使用像

这样的课程时
class Foo
{
  public function runWithCallback($custom_callback) {
    ...
    return call_user_func_array($custom_callback, [$arg_a, $arg_b]);
  }
  public function aHelperMethod($arg_a) {
    ...
  }
}

当然上面的代码不起作用,因为$foo = new Foo(); $foo->runWithCallback(function($arg_a, $arg_b) { ... // now I need to use helper method "aHelperMethod" $this->aHelperMethod($arg_c); // wrong code ... }); 在匿名函数中没有任何意义。

有可能做我想做的事吗? THX。

1 个答案:

答案 0 :(得分:0)

好的,感谢@BilalAhmed的评论,我找到了一个"脏"这样做的方式:

$foo = new Foo();
$foo->runWithCallback(function($arg_a, $arg_b) use ($foo) {
  ...
  // now I need to use helper method "aHelperMethod"
  $foo->aHelperMethod($arg_c); // wrong code
  ...
});