开发者学堂课程【PHP 基础入门课程(下):可变函数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/710/detail/12640
可变函数
内容介绍:
一、可变函数学习目标及其概念
二、可变函数使用步骤
三、可变函数的举例及其证明
四、可变函数使用流程分析
五.可变函数小结
一、可变函数学习目标及其概念
学习目标:了解可变函数的意义,掌握可变函数的使用;
可变函数概念:即一个变量所保存的值刚好是另外一个函数的名字,那么可以通过变量直接访问函数,这里要注意两个点:
1.变量的值是一个函数名(字符串)
2.变量+()就可以当做函数名访问函数
二、可变函数使用步骤
1.定义一个函数
2.声明一个变量并赋值,值刚好是函数名
3.变量+()访问函数
三、可变函数的举例及其证明
实例:
比如说有一个函数叫做 display,同时定义了一个变量 display 的值,此时利用一个变量名加上一个“()”实现 display 函数的一个访问,原理是$var 是一个变量,加上一个“()”就等于一个 display,把 display 写出来,拼凑一个“()”,当系统检测到“()”的时候那么就是个函数,系统就去寻找是否有 display 的这个函数,有就调用。
代码如下:
建立可变函数的文件
<?php
#可变函数
//定义函数,输出函数的名字
Function display(){
Echo_FUNCTION_;
}
//定义一个变量
$var =_’display’_;
//访问可变函数,就是变量变函数,输出 display
$var();
打开浏览器,把文件名输上去;可以看到下图的结果,就说明调用可变函数成功:
证明:
输入如下代码,看下是否走到内部的函数里面:
Function display(){
Echo ‘inner’;
Echo_FUNCTION_;
}
到浏览器刷新一下,可以看到:innerdisplay 的字样,就说明是正确的,这可以说变量实现了函数的访问。
实用是如何使用的,通常情况下是将自定义的函数作为系统函数或者其他位置的回调函数(callback)实用:
取一个数的绝对值,绝对值是什么,如果它小于0,就取一个负,否则就取它自己,那么得到的就是一个正的值,然后要求两个绝对值的和,a 和 b,但是不确定它们两个是否是一个正数,所以需要一个函数,外部传进来,专门用来求绝对值,利用外部传来的函数,然后把它变作一个调用,代码如下:
//去一个数的绝对值
Function jdz($n){
Return $n<0? -$n:$n;
}
//求两个数的绝对值的和
Function sum_jdz($a,$b,$func){
//利用外部的$func函数(回调函数)来实现$a,和$b 的绝对值求和
Return $func($a)+$func($b);
}
Echo sum_jdz(-1,-2.’jdz’);
$function 是一个函数的名字,该函数能够计算绝对值,浏览器刷新之后结果为3,如下:
如何理解呢?$function 是一个变量,保存的值是绝对值,再加上一个“()”就是一个函数,系统就会去寻找这个绝对值的函数,如果有,就调用它,把值赋予它,系统就拿到了对应的绝对值,那么 sum 在这个里面就叫做回调函数,回调函数就是在这个函数里面去调用所给出的函数。
四、可变函数使用流程分析
函数写出来之后,给它赋值,$a=-1,$b=-1
,然后$func=’jdz’
,赋值完毕,接下来,可以看到$func($a)+$func($b)
,这时的$func 是绝对值的意思,绝对值加上绝对值,此时要判断一下绝对值这个函数是否存在,存在的话就调用一下上诉的函数,拿到它的绝对值,就计算结果,如果不存在,就抛掉。
求证一下,在上诉代码最后一行的加上一个 d:
Function jdz($n){
Return $n<0? -$n:$n;
}
Function sum_jdz($a,$b,$func){
Return $func($a)+$func($b);
}
Echo sum_jdz(-1,-2.’jdzd’);
运行一下,就会出现错误:
传的时候要传正确,要传一个函数名存在的地址,$var=’一个函数的名字’
。
五、可变函数小结
1.可变函数就是利用变量+()来寻找匹配的函数名当做函数访问
2.可变函数执行逻辑
变量取得值(字符串);变量+():系统自动理解为函数;系统寻找变量值对应的函数名;调用函数访问。