可变函数|学习笔记

简介: 快速学习可变函数

开发者学堂课程【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();

打开浏览器,把文件名输上去;可以看到下图的结果,就说明调用可变函数成功:

image.png

证明:

输入如下代码,看下是否走到内部的函数里面:

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,如下:

image.png    

如何理解呢?$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’);

运行一下,就会出现错误:

image.png

传的时候要传正确,要传一个函数名存在的地址,$var=’一个函数的名字’


五、可变函数小结

1.可变函数就是利用变量+()来寻找匹配的函数名当做函数访问

2.可变函数执行逻辑

变量取得值(字符串);变量+():系统自动理解为函数;系统寻找变量值对应的函数名;调用函数访问。

相关文章
|
安全 Ubuntu 关系型数据库
Ubuntu下MySQL无法启动和访问的问题解决与修复
Ubuntu下MySQL无法启动和访问的问题解决与修复
1931 1
Ubuntu下MySQL无法启动和访问的问题解决与修复
|
SQL 存储 缓存
DB2常见错误码注释(一)
DB2常见错误码注释
341 0
|
数据可视化 图形学 UED
只需四步,轻松开发三维模型Web应用
为了让用户更方便地应用三维模型,阿里云DataV提供了一套完整的三维模型Web模型开发方案,包括三维模型托管、应用开发、交互开发、应用分发等完整功能。只需69.3元/年,就能体验三维模型Web应用开发功能!
989 9
只需四步,轻松开发三维模型Web应用
|
存储 分布式计算 数据处理
面向业务增长的数据平台构建策略
【8月更文第13天】为了构建一个能够支持企业业务增长的数据平台,我们需要考虑几个关键的方面:数据的收集与整合(数据集成)、存储、处理和分析。本文将详细介绍这些步骤,并提供具体的代码示例来帮助理解。
377 1
|
分布式计算 资源调度 大数据
MaxCompute操作报错合集之在MaxCompute中加载自定义函数SURPATH_UPPER时出现了问题,如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
存储 边缘计算 安全
5G 边缘计算的安全保障:构建可信的边缘智能
5G 边缘计算的安全保障:构建可信的边缘智能
485 0
|
设计模式 算法 Java
Java中的if-else if-else语句
Java中的if-else if-else语句
555 1
|
SQL 存储 安全
第4章 数据库安全性——4.2 数据库安全性控制
第4章 数据库安全性——4.2 数据库安全性控制
|
算法
Aho Corasick Algorithm
Aho Corasick Algorithm
290 0
|
Java
Java中如何克隆一个对象?
【4月更文挑战第13天】
415 0