PHP Callback 回调类型

PHP 5.4 起可用 callable 类型指定回调类型 callback。本文档基于同样理由使用 callback 类型信息。

传递

一个 PHP 的函数以 string 类型传递其名称。可以使用任何内置或用户自定义函数,但除了语言结构例如:array()echoempty()eval()exit()isset()list()printunset()

一个已实例化的对象的方法被作为数组传递,下标 0 包含该对象,下标 1 包含方法名。

静态类方法也可不经实例化该类的对象而传递,只要在下标 0 中包含类名而不是对象。自 PHP 5.2.3 起,也可以传递 'ClassName::methodName'

除了普通的用户自定义函数外,create_function() 可以用来创建一个匿名回调函数。自 PHP 5.3.0 起也可传递 closure 给回调参数

Example #1 回调函数示例

  1. <?php  
  2.  
  3. // An example callback function 
  4. function my_callback_function() { 
  5.     echo 'hello world!'
  6.  
  7. // An example callback method 
  8. class MyClass { 
  9.     static function myCallbackMethod() { 
  10.         echo 'Hello World!'
  11.     } 
  12.  
  13. // Type 1: Simple callback 
  14. call_user_func('my_callback_function');  
  15.  
  16. // Type 2: Static class method call 
  17. call_user_func(array('MyClass''myCallbackMethod'));  
  18.  
  19. // Type 3: Object method call 
  20. $obj = new MyClass(); 
  21. call_user_func(array($obj'myCallbackMethod')); 
  22.  
  23. // Type 4: Static class method call (As of PHP 5.2.3) 
  24. call_user_func('MyClass::myCallbackMethod'); 
  25.  
  26. // Type 5: Relative static class method call (As of PHP 5.3.0) 
  27. class A { 
  28.     public static function who() { 
  29.         echo "A/n"
  30.     } 
  31.  
  32. class B extends A { 
  33.     public static function who() { 
  34.         echo "B/n"
  35.     } 
  36.  
  37. call_user_func(array('B''parent::who')); // A 
  38. ?> 

一些函数如 call_user_func()usort() 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » PHP Callback 回调类型

分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址