PHP 将附加参数传递给回调函数

标签 php

有没有办法将额外的参数传递给回调函数?

class Bar{

  public function test(){
      $count = 0; 

      $foo = new Class();
      $foo->calling([$this, 'barFunction']);
  }

  public function barFunction($data, $count){
      //...
  }

我希望 Foo 的调用方法传入数据,并将 $count 作为第二个参数传递。

这是一个用闭包代替参数的例子。如果我使用闭包,我可以传入 $count 但在这种情况下我需要使用 Bar 的类函数。

class Bar{

  public function test(){
      $count = 0; 

      $foo = new Class();
      $foo->calling(function($data) use($count){
         //..some work
      });
  }

最佳答案

可以使用 call_user_func_array

call_user_func_array([$context, $function], $params);

即在您的示例中,$context 将是 Bar ($this),$function 将是您的 'barFunction' ,参数将是 [$data, $count]

像这样?

<?php 

class Foo {
    public function __construct() {}

    public function mDo($callback) {
        $count = 10;
        $data = ['a', 'b'];

        // do a lot of work (BLOCKING)

        call_user_func_array($callback, [$data, $count]);
    }
}

class Bar {
    public function test() {
        $a = new Foo();
        $a->mDo([$this, 'callback']);
    }

    public function callback($data, $count) {
        print($data);
        print($count);
    }
}

$bar = new Bar();
$bar->test();

关于PHP 将附加参数传递给回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34445214/

相关文章:

php - 浏览器游戏PHP+MySQL每秒增加资源

php - 保持 LDAP session

javascript - 循环遍历json编码对象

php - 这是关于安全性和 MySQL 的良好实践吗?

php - Pear 错误已弃用

javascript - 没有Cookie或本地存储的用户识别

javascript - 如何在 $.get URL 中调用 this.id

php - 给定一组格式为 {FIXED PREFIX}/{NUMERIC ID}/... 的 URL,如何检索具有最高 {NUMERIC ID} 的 URL?

php - 有没有办法通过Onclick功能从MOzilla强制打开一个新的浏览器窗口到IE?

PHP SSL3_GET_SERVER_CERTIFICATE :certificate verify failed