Callbacks

Example #1 Callback function examples

<?php

  //An example callback function

  function my_callback_function(){

  echo 'hello world!';

}

class MyClass{

  static function myCallbackMethod(){

  echo 'Hello World!';

  }

}

//  Type 1:Simple callback

call_user_func('my_callback_function');

//  Type 2:Static class method call

call_user_func(array('MyClass','myCallbackMethod'));

//  Type 3:Object method call

$obj=new MyClass();

call_user_func(array($obj,'myCallbackMethod'));

//  Type 4:Static class method call(As of PHP 5.2.3)

call_user_func('MyClass::myCallbackMethod');

//  Type 5:Relative static class method call(As of PHP 5.3.0)

class A{

  public static function who(){

    echo "A\n";

  }

}

class B extends A{

  public static function who(){

    echo "B\n";

  }

}

call_user_func(array('B','parent::who'));

?>

 

Example #2 Callback example using a Closure

<?php

//Our closure

$double =function($a){

  return $a*2;

}

//This is our range of numbers

$numbers=range(1,5);

//Use the closure as a callback here to

//double the size of each element in our range

$new_numbers=array_map($double,$numbers);

print implode('  ',$new_numbers);

?>

以上例程会输出:

2 4 6 8 10

Note:In PHP 4,it was necessary to use a reference to create a callback that points

to the actual object,and not a copy of it.

Note:

在函数中注册有多个回调内容时(如使用call_user_func()与call_user_func_array()),如在前一个回调中有未捕获的异常,其后的将不再被调用。

 

posted @ 2016-02-25 15:47  贝勒爷vegas  阅读(133)  评论(0编辑  收藏  举报