1. <?php
  2. /**
  3. * 回调函数:
  4. * 指调用函数时并不是传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中
  5. * 使用回调函数可以 将一段自己定义的功能传到函数内部使用
  6. * 1. 变量函数(可变函数)
  7. * 变量后面有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行
  8. */
  9.  
  10. // 变量函数
  11. function one(){
  12. echo 'one';
  13. }
  14. function two(){
  15. echo 'two';
  16. }
  17. function say($words){
  18. echo $words;
  19. }
  20. $a = 'one';
  21. $a();
  22. echo '<hr>';
  23. $a = 'two';
  24. $a();
  25. echo '<hr>';
  26.  
  27. /**
  28. * 借助变量函数,声明一个回调函数
  29. * @param callback $func 传递一个函数名称字符串作为参数
  30. */
  31. function whattodo($func){
  32. $func();
  33. }
  34.  
  35. whattodo('one');
  36. echo '<hr>';
  37.  
  38. /**
  39. * 借助call_user_func_array(callable $callback , array $param_arr ),自定义回调函数
  40. * 调用回调函数,并把一个数组参数作为回调函数的参数
  41. */
  42. function whattodo2(){
  43. call_user_func_array('say',array('hello word'));
  44. }
  45.  
  46. whattodo2();
  47. echo '<hr>';
  48.  
  49. /**
  50. * 借助call_user_func(callable $callback [, mixed $parameter [, mixed $... ]]),自定义回调函数
  51. * 把第一个参数作为回调函数调用
  52. */
  53. function whattodo3(){
  54. call_user_func('say','hello word!');
  55. }
  56.  
  57. whattodo3();
  58. echo '<hr>';
  59.  
  60. /**
  61. * 类中静态函数和对象的方法回调:
  62. * 回调类中的成员犯法:第一个参数必须使用数组,并且指定两个元素
  63. */
  64. class Demo{
  65. static function eat($food){
  66. echo $food;
  67. }
  68. }
  69. // 类名称字符串
  70. call_user_func_array(array("Demo","eat"),array('rice'));
    call_user_func_array("Demo::eat", array('rice'));
  71. echo '<hr>';
  72.  
  73. class Demo2{
  74. function play($play){
  75. echo $play;
  76. }
  77. }
  78. $obj = new Demo2();
  79. // 对象引用
  80. call_user_func_array(array($obj,"play"),array('play games'));
  81.  
  82. call_user_func_array(array(new Demo2(),"play"),array('play games'));

PHP函数总结 (五)的更多相关文章

  1. Python 进程线程协程 GIL 闭包 与高阶函数(五)

    Python 进程线程协程 GIL 闭包 与高阶函数(五) 1 GIL线程全局锁 ​ 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的 ...

  2. resize函数有五种插值算法

    转自http://blog.csdn.net/fengbingchun/article/details/17335477 最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻 ...

  3. 第196天:js---调用函数的五种方式

    一.普通方式 /*普通模式*/ // 声明一个函数,并调用 function func() { console.log("Hello World"); } func(); 二.函数 ...

  4. matlab自定义函数的五种表示(前2种重点)

    1.命令文件/函数文件+函数文件:多个M文件 2.函数文件+子函数:一个M文件 3. inline:无需M文件 4.符号表达式+subs方式:无需M文件 5.字符串+subs方式:无需M文件 第一种: ...

  5. C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...

  6. python函数(五)

    函数 1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警, 你掏空了所有的知识量,写出了以下代码 ...

  7. Scala 函数(五)

    函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...

  8. javascript调用Flash里对象的方法(函数)搞了五个小时。

    搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...

  9. python第十四课--排序及自定义函数之自定义函数(案例五)

    演示函数的定义和使用细节: 默认参数:#在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错.#会用默认值来代替参与后期的运算 def m1(name='张三',ag ...

  10. TypeScript 函数 (五)

    传递给一个函数的参数个数必须与函数期望的参数个数一致. 参数类别: 必须参数 可选参数 :可选参数必须在参数后面. 默认参数 :当用户没有传递这个参数或传递的值是undefined时. 它们叫做有默认 ...

随机推荐

  1. Java设计模式应用——观察者模式

    告警结果产生后,可能需要发送短信,邮件,故障管理系统.这些转发操作不应当影响告警生成入库,并且类似事件可能根据不同场景,客户习惯不同,此时,使用观察者模式则可以很好的适应上述场景. 观察者模式应当包括 ...

  2. 功能测试三剑客:测试框架、bug预防、探索性测试

    功能测试有一套框架来实现完整的覆盖测试的各个维度 测试框架: 参加本人之前的博客测试框架(包括总体的框架.web测试框架.PC客户端.手机客户端.服务器端.接口测试)六部分,罗列了各个领域的测试覆盖考 ...

  3. 如何禁用MySql总是定时弹出一个MySQLInstallerConsole.exe的窗口

    如何禁用MySql总是定时弹出一个MySQLInstallerConsole.exe的窗口 禁用mysql总是弹出一个安装框的定时任务这一条安装命令,Installing MySQL 5.6.21 u ...

  4. C/C++之标准库和标准模板库

    C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完 成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花 ...

  5. python之路----面向对象中的内置函数

    property属性 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法 ...

  6. Python3.x(windows系统)安装requests库

    Python3.x(windows系统)安装requests库 cmd命令: pip install requests 执行结果:

  7. Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程

    Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程 原因: 一般造成这种原因是因为项目中有非守护线程的存在: 解决方案: 一.从Tomcat上解决 方案1:(推荐的方案:因为一台 ...

  8. 06: AJAX全套 & jsonp跨域AJAX

    目录: 1.1 AJAX介绍 1.2 jQuery AJAX(第一种) 1.3 原生ajax(第二种) 1.4 iframe“伪”AJAX(第三种) 1.5 jsonp跨域请求 1.6 在tornad ...

  9. 20145105 《Java程序设计》第10周学习总结

    20145105 <Java程序设计>第10周学习总结 教材学习内容总结 JAVA网络编程 一.网络概述 (一)计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据 ...

  10. 如何使用python来对二维数组进行排序

    1.复合排序 直接用numpy的lexsort就可以 import numpy as np data = np.array([[1,2,3,4,5], [1,2,3,6,7], [2,3,4,5,7] ...