php学习第六课函数

php学习第六课函数

函数就是一个功能,封装好的功能!

Function demo(){

}

函数的学习流程

  1. 学习函数的定义☆
  2. 学习如何自定义函数☆☆☆☆☆
  3. 了解函数的参数☆☆☆☆☆
  4. 了解return的作用☆☆☆☆☆
  5. 学习函数的变量作用域☆☆☆
  6. 特殊的函数类型
  7. 变量函数☆☆
  8. 回调函数☆☆
  9. 递归函数☆☆☆☆☆
  10. 内部函数☆
  11. 闭包函数☆☆☆
  12. 文件的包含☆☆☆☆☆
  13. 学习函数

a)         函数的分类

  1. 根据是否是系统自带:系统函数和自定函数
  2. 根据是否具有返回值:带返回值得函数和执行过程的函数
  3. 根据结构不同
  4. 一般函数
  5. 变量函数
  6. 回调函数
  7. 内部函数
  8. 递归函数
  9. 闭包函数
  10. 自定义函数的语法结构

a)         基本格式

b)         Function 函数名(){

PHP语句

(函数体)

}

  1. 函数的姓就是function 不能省略
  2. 函数名(有姓,也有名,)

a)         函数名的定义方式

  1. 可以是英文,不可是使用中文
  2. 可以使用数字,单是不能用数字开头
  3. 不能使用特殊字符,_ 除外
  4. 函数声明要有意义
  5. 函数名不区分大小写
  6. 不可以跟已经存在的函数(系统和自定义)重名
  7. 函数的特征

a)         函数定义之后,不调用不执行(就跟一只小狗一样)

b)         函数调用不分先后,因为PHP解析器在执行页面代码之前就已经预先加载了函数部分的内容

Return语句的作用

具有return 的函数就是有返回值得函数

没有return 的函数就称之为执行过程函数

作用1

如果函数中存在return 并且执行了该return 语句,那么该函数执行的结构就可以被变量接受

作用2:

如果函数的执行过程中执行了return语句,那么后续的代码都不在执行

一个函数中可以有N个RUTURN. 但是只能执行一个。

注意:一个函数中可以有多个return语句,但是程序只能执行一条,一般多个return语句都是使用分支结构分开存放。

Echo 与 return  的区别:

Echo  直接输出,拿不到结果。

Return 可以返回结果,赋值给变量后在输出。

 

  1. 函数的参数

a)         参数分为形参和实参两部分

  1. 形参就是形式上的参数,在定义函数的括号中使用
  2. 实参就是实际上的参数,在调用函数的括号中使用

注意:1.如果函数有定义形参,那么调用函数时需要传入对应实参

  1. 如果函数同时具备形参的默认值,并且传入了实参,那么传进来的值以实参为主。
  2. 如果要传入实参,必须和形参的位置一一对应
  3. 如果形参中具有多个形参有默认值,将最有可能传入的形参放入前面,
  4. 如果函数同时具有默认值的形参和没有默认值得形参,那么没有默认值的形参一定要放到默认值得形参前
  5. 注意:传入的参数一定要和形参对应,免得出现逻辑问题,(位置一一对应)
  6. 函数的变量作用域(就是函数相关的变量的作用范围)

a)         局部变量

在函数中定义的变量就是局部变量,起作用范围仅限函数内部

在函数外部声明的变量,其作用范围就是当前页面部分,函数内部无法使用。

在函数内部或是函数的形参里面声明变量,也是局部变量。

 

b)         全局变量

  1. 在函数的内部和外部都可以访问和使用的变量就是全局变量

实现全局变量的方法1

在函数外部具有一个变量

在函数内部也具有一个同名变量

在函数内部的同名变量前使用global关键字既可以实现全局变量

注意:global声明全局变量时禁止赋值

如果一个变量在函数内部已经赋值,之后使用global进行全局

声明,结果是该变量的值变为函数外部变量的值

注意:global在函数内部声明变量时,变量赋值要在global下方

 

实现全局变量的方法2

在函数内部可以使用$GLOBALS[变量名]的方式直接调用函数外部的变量值,此时函数内部都可以使用。实现了一种方式的全局变量
静态变量

在函数内部使用static声明的变量就是静态变量

静态变量特征

静态变量只会被初始化一次

静态变量在函数运行结束后不会被回收

静态变量一般用于计算函数调用次数

变量引用:(引用传参)(重点)

在设定函数形参时,如果在形参变量之间增加了&符号,就表示实参传递时要引用传参的方式(变量引用赋值)的方式将实参的值传递给形参

此时如果使用引用传参,那么函数内部的引用传参的形参值发生改变,对应的外部实参变量的值也发生改变。效果类似于全局变量。

变量函数

当一个变量的值是某个函数的名称字符串时,我们可以使用

变量()的方式调用,对应名称的函数,这种调用方式就是变量函数。

回调函数

回调函数只是变量函数的一个变形,本质上还是变量函数的应用。

在一个函数(A函数)中,通过变量函数的方式($val())调用另外一个函数(B函数,C函数),而其函数名通过A函数的参数传进来的,这种方式就是回调函数,应为函数A中的变量函数($val())会根据用户传入不同的实参回过头来调用不同的名称的其他函数

格式:function A($var){

$var();//回调函数要素1,变量函数

//A();

//B();

}

A(‘B’)//回调函数要素2.传入函数名称字符串

A(‘C’)

内部函数:

什么是内部函数:在函数的内部声明的函数,就是内部函数

  1. 在函数外部是否可以调用内部函数:

不可以直接调用,但是如果调用外部函数之后,就可以任意调用内部函数。

  1. 在函数内部是否可以调用内部函数

可以调用,但是必须在内部函数定义之后调用

递归函数

在一个函数中调用当前函数本身,这种函数格式就是递归

(能懂就懂,不懂拉倒。)

文件系统  对目录的所有操作  都会使用到递归

匿名函数

没有名字的函数就是匿名函数

如果声明一个函数,而该函数没有函数名,那么这个函数就是匿名函数

用法1:用变量接受匿名函数

变量名=function(){

函数体;

};(注意这里必须有分号结束)

匿名函数的调用方式  类似于变量函数

调用:变量名();

 

闭包函数:

在子函数内部使用父函数的变量,这种方式就是闭包。

 

 

格式:function 父函数(){

$var=值;//父函数的局部变量
//声明匿名函数并且使用USE格式实现闭包

$变量=function() use ($var){

//子函数代码

}

}

匿名回调函数

回调函数的区别:

  1. 以字符串方式传入的回调函数
  2. 以匿名函数方式传入的回调函数
  3. 字符串方式传入回调函数,该函数可以使用多次,任意调用,应这是预先加载的普通函数,匿名函数方式传入的回调函数,只可以在当前回调函数中使用,其他地方无法使用。
  4. 匿名函数的回调函数方式效率高,回到函数运行完毕,匿名函数即被收回。而字符串传入的函数由于是预先加载的普通函数,所以在页面没有执行完毕时,是不会消失的。

可变长度参数列表(了解很好用)

在函数中,实参的实际传入个数允许超过形参的个数,在此情况下如果想获取所有传入的实参,可以使用函数func_get_args()来获取所有实参组成的数组。在函数内部进行其他的操作

注意:func_get_args()尽在函数内部使用。

文件的包含:

Include 文件包含

作用:相当于将文件的内容复制到指定的文件当中

常用于包含数据或者是配置文件,但是任何PHP文件都可以包含

Include_once 单次文件的包含

作用:相当于将文件的内容复制到指定的文件中,但是如果文件已经存在,将不再包含,不再包含返回true值

Include和inlcude_once的区别:

  1. include包含文件可以包含n次, 二include _once只能包含一次
  2. 。Include的效率略高于include_once,因为include_once需要判断
  3. Inlcude 包含文件成功返回整形,但是include_once第一次包含返回的是整形1,以后包含相同文件时返回时true。

Include和require 的区别:

Include 包含文件如果失败,提示warning级的错误

Require 包含文件如果失败,提示ERROR级的错误

Include包含文件失败,后续代码继续执行

Require 包含文件失败,后续代码将不再执行。

Require_once

作用:相当于用require的方式,仅包含一次文件,功能类似于include_once,都是只包含一次

Require和require_once的区别相当于include和inlcude_once的区别。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据