PHP函数总结 (五)
- <?php
- /**
- * 回调函数:
- * 指调用函数时并不是传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中
- * 使用回调函数可以 将一段自己定义的功能传到函数内部使用
- * 1. 变量函数(可变函数)
- * 变量后面有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行
- */
- // 变量函数
- function one(){
- echo 'one';
- }
- function two(){
- echo 'two';
- }
- function say($words){
- echo $words;
- }
- $a = 'one';
- $a();
- echo '<hr>';
- $a = 'two';
- $a();
- echo '<hr>';
- /**
- * 借助变量函数,声明一个回调函数
- * @param callback $func 传递一个函数名称字符串作为参数
- */
- function whattodo($func){
- $func();
- }
- whattodo('one');
- echo '<hr>';
- /**
- * 借助call_user_func_array(callable $callback , array $param_arr ),自定义回调函数
- * 调用回调函数,并把一个数组参数作为回调函数的参数
- */
- function whattodo2(){
- call_user_func_array('say',array('hello word'));
- }
- whattodo2();
- echo '<hr>';
- /**
- * 借助call_user_func(callable $callback [, mixed $parameter [, mixed $... ]]),自定义回调函数
- * 把第一个参数作为回调函数调用
- */
- function whattodo3(){
- call_user_func('say','hello word!');
- }
- whattodo3();
- echo '<hr>';
- /**
- * 类中静态函数和对象的方法回调:
- * 回调类中的成员犯法:第一个参数必须使用数组,并且指定两个元素
- */
- class Demo{
- static function eat($food){
- echo $food;
- }
- }
- // 类名称字符串
- call_user_func_array(array("Demo","eat"),array('rice'));
call_user_func_array("Demo::eat", array('rice'));- echo '<hr>';
- class Demo2{
- function play($play){
- echo $play;
- }
- }
- $obj = new Demo2();
- // 对象引用
- call_user_func_array(array($obj,"play"),array('play games'));
- call_user_func_array(array(new Demo2(),"play"),array('play games'));
PHP函数总结 (五)的更多相关文章
- Python 进程线程协程 GIL 闭包 与高阶函数(五)
Python 进程线程协程 GIL 闭包 与高阶函数(五) 1 GIL线程全局锁 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的 ...
- resize函数有五种插值算法
转自http://blog.csdn.net/fengbingchun/article/details/17335477 最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻 ...
- 第196天:js---调用函数的五种方式
一.普通方式 /*普通模式*/ // 声明一个函数,并调用 function func() { console.log("Hello World"); } func(); 二.函数 ...
- matlab自定义函数的五种表示(前2种重点)
1.命令文件/函数文件+函数文件:多个M文件 2.函数文件+子函数:一个M文件 3. inline:无需M文件 4.符号表达式+subs方式:无需M文件 5.字符串+subs方式:无需M文件 第一种: ...
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...
- python函数(五)
函数 1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警, 你掏空了所有的知识量,写出了以下代码 ...
- Scala 函数(五)
函数是一组一起执行一个任务的语句. 您可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. Scala 有函数和方法, ...
- javascript调用Flash里对象的方法(函数)搞了五个小时。
搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...
- python第十四课--排序及自定义函数之自定义函数(案例五)
演示函数的定义和使用细节: 默认参数:#在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错.#会用默认值来代替参与后期的运算 def m1(name='张三',ag ...
- TypeScript 函数 (五)
传递给一个函数的参数个数必须与函数期望的参数个数一致. 参数类别: 必须参数 可选参数 :可选参数必须在参数后面. 默认参数 :当用户没有传递这个参数或传递的值是undefined时. 它们叫做有默认 ...
随机推荐
- Java设计模式应用——观察者模式
告警结果产生后,可能需要发送短信,邮件,故障管理系统.这些转发操作不应当影响告警生成入库,并且类似事件可能根据不同场景,客户习惯不同,此时,使用观察者模式则可以很好的适应上述场景. 观察者模式应当包括 ...
- 功能测试三剑客:测试框架、bug预防、探索性测试
功能测试有一套框架来实现完整的覆盖测试的各个维度 测试框架: 参加本人之前的博客测试框架(包括总体的框架.web测试框架.PC客户端.手机客户端.服务器端.接口测试)六部分,罗列了各个领域的测试覆盖考 ...
- 如何禁用MySql总是定时弹出一个MySQLInstallerConsole.exe的窗口
如何禁用MySql总是定时弹出一个MySQLInstallerConsole.exe的窗口 禁用mysql总是弹出一个安装框的定时任务这一条安装命令,Installing MySQL 5.6.21 u ...
- C/C++之标准库和标准模板库
C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完 成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花 ...
- python之路----面向对象中的内置函数
property属性 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法 ...
- Python3.x(windows系统)安装requests库
Python3.x(windows系统)安装requests库 cmd命令: pip install requests 执行结果:
- Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程
Linux下tomcat的shutdown命令可以关闭服务但是杀不死进程 原因: 一般造成这种原因是因为项目中有非守护线程的存在: 解决方案: 一.从Tomcat上解决 方案1:(推荐的方案:因为一台 ...
- 06: AJAX全套 & jsonp跨域AJAX
目录: 1.1 AJAX介绍 1.2 jQuery AJAX(第一种) 1.3 原生ajax(第二种) 1.4 iframe“伪”AJAX(第三种) 1.5 jsonp跨域请求 1.6 在tornad ...
- 20145105 《Java程序设计》第10周学习总结
20145105 <Java程序设计>第10周学习总结 教材学习内容总结 JAVA网络编程 一.网络概述 (一)计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据 ...
- 如何使用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] ...