PHP回调函数剖析

//类A
class A {
    //类A回调函数
    public function callback($n){
        //被回调后返回值
        return $n+300;
    }
    //类A常规函数
    public function func(){
        //实例化类B,通过$this来传递类A,这里省去类A的new
        $b=new B(array($this, "callback"));
        //调用类B的常规函数进行回调
        $b->call();
    }
}
//类B
class B{
    //类B私有变量,接收构造参数
    private $arr;
    //类B构造函数
    public function __construct($arr){
        //接收构造参数
        $this->arr=$arr;
    }
    //类B常规函数发起回调
    public function call(){
      //发起回调并返回由A的callback返回的值
      $ret=call_user_func($this->arr,"100");
      echo $ret;
    }
}
//实例化A类
$a = new A();
//调用A对象的常规方法func
$a->func();
//输出400

//类MyClass
class MyClass{
    //根据函数名称回调,带参数
    public function call($funcName,$str){
      //回调函数名称由外部指定,并带参数
        call_user_func(array($this,$funcName),$str);
    }
    public function funcA($str){
    	echo "funcA ".$str." \n";
    }
    public function funcB($str){
    	echo "funcB ".$str." \n";
    }
}
 $obj=new MyClass();
 $obj->call('funcA',' 参数A');
 $obj->call('funcB',' 参数B');
//输出:
//funcA  参数A 
//funcB  参数B 

 

你可能感兴趣的:(PHP)