Callbacks
2016-02-25 15:47
232 查看
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()),如在前一个回调中有未捕获的异常,其后的将不再被调用。
<?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()),如在前一个回调中有未捕获的异常,其后的将不再被调用。
相关文章推荐
- DCMTK 发送影像到相机
- C语言 链表的使用(链表的增删查改,链表逆转,链表排序)
- Autolayout 总结
- leetcode 231 Power of Two(位运算)
- C++ template —— tuple(十三)
- C#入门教程
- Memcached(四)Memcached的CAS协议
- 【云计算】docker相关开源项目、工具
- 【Android】【开发技巧】item 点击效果问题
- 【Android】【开发技巧】item 点击效果问题
- 【Android】【开发技巧】item 点击效果问题
- 【Android】【开发技巧】item 点击效果问题
- 【Android】【开发技巧】item 点击效果问题
- 【Android】【开发技巧】item 点击效果问题
- Linux初讲——单用户模式(常用于更改root密码)
- 【Android】【开发技巧】item 点击效果问题
- 【Android】【开发技巧】item 点击效果问题
- 代理 kvo和通知
- 浅谈 Java 关于接口与抽象类的理解(后续更新)
- 运用fastjson+SharedPreferences 保存、读取复杂数据