PHP - php中的函数

1. 什么是函数

说明: 把一段具有某个功能的代码进行封装,在需要的地方进行调用。

2. 函数的分类

  1. 根据是否是系统自带,函数可以分为系统函数和自定义函数
    • 自定义函数的函数名的目的是给当前功能起一个可以调用的名称。
    • 系统自带的函数是系统函数。
  2. 根据是否具有返回值分为:带返回值的函数和执行过程函数。
  3. 根据函数结构的不同,分为:
    • 一般函数
    • 变量函数
    • 回调函数
    • 内部函数
    • 递归函数
    • 闭包函数

3. 函数的定义以及自定义函数

// 自定义函数
function 函数名([形式参数列表]){
	// 有具体功能的代码块;函数体;
	// [return 返回值];
}

//函数的调用
函数名([实际参数列表]);
  • function 不能省略。
  • 函数的调用: 直接使用函数名就可以调用当前函数。函数名([实际参数]);
  • 函数名的命名规则:
    • 函数名由字母数字下划线组成,数字不能开头。
    • 函数名不区分大小写。
    • 同一作用域中,函数名不接重复。
    • 函数名要有意义。
  • 函数的特性:
    • 函数定义好后,不调用不执行。
    • 函数可以在定义之前调用(变量提升)。

4. return有的作用

  • 具有return语句的函数就是有返回值的函数。
    • 返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。
    • 如果省略了 return,则返回值为 null。
    • 如果函数中存在return语句,并且执行了该return语句,return后面的数据将可以被变量接收,继续做运算或者其他操作。
    • 如果函数的执行过程中执行了rerun语句,那么后续代码不再执行。
    • 一个函数中可以有多个return,但是程序只能执行一个,一般多个return语句都是使用在分支结构分开存放的。
  • 没有return语句的函数就是执行过程函数。
    • 执行过程函数只能执行一遍过程,不能再做其他操作。

5. 函数的参数

  • 形式参数:形式上的参数,定义函数时使用。
  • 实际参数:调用函数时传递给函数的实际数据就是实参。
    • 每个参数就是变量,多个参数用逗号隔开。
    • 函数如果定义了形参,且形参没有默认值时,调用时必须传入一一对应的实参。

6. 函数的变量作用域

函数变量的作用域,就是指函数的相关变量的作用域范围。

  1. 局部变量:
    • 在函数中定义的变量就是局部变量,其作用范围仅限函数的内部。
    • 形参也是函数内部的变量,也是局部变量。
  2. 全局变量
    • 普通变量
      • 在函数外部声明的变量,其作用范围就是当前页面,函数内部无法使用。
    • 全局变量
      • 在函数内部和外部都可以访问和使用的变量就是全局变量。
      • 实现全局变量的方法1: global关键字
        • 在函数外部有一个变量
        • 在函数内部也有一个同名变量
        • 在函数内部的同名变量前使用global 关键字修饰,即可以实现全局变量。
        • 注意: global 声明全局变量时禁止赋值。
      • 实现全局变量的方法2: $GLOBALS
        • 在函数内部可以使用 $GLOBALS[ 变量名]的方式直接调用函数外部的变量值。此时函数内外部都可以使用该变量,实现了另一种方式的全局变量。

在这里插入图片描述

7. 静态变量

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

静态变量特征:

  1. 静态变量只会被初始化一次。
  2. 静态变量在函数运行结束后不会被回收。
  3. 静态变量一般用于计算函数调用次数。

8. 引用传参

  • 函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。如果希望允许函数修改它的参数值,必须通过引用传递参数。
  • 如果想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面加上符号 &。

变量函数

  • 当一个变量的值是某个函数的名称字符串时,可以使用变量名()的方式调用函数,这种调用方式就是变量函数。
$ysf = 'jia';
function jia($x, $y){
	return $x + $y;
};
$ysf(3,5);// 8

回调函数

  • 回调函数只是变量函数的一种变量,本质还是变量函数的应用。
  • 在一个函数A中,通过变量函数的方式$var()调用另外一个函数(B,C),而其函数的名称通过A函数的参数传递进来, 这种方式就是回调函数。因为函数A中的变量函数$var()会根据用户传入不同的的实参,然后调用不同名称的其他函数。
function A($var){
	$var();//变量函数
};
a('b');//在a函数中,调用回调函数b
  • 回调函数要素1, 变量函数。
  • 回调函数要素2, 传入函数名称字符串。

匿名回调

匿名回调格式:调用函数(传入匿名函数)
回调函数的区别:

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

文件的包含:

include 文件包含

  • 作用:相当于将文件的内容复制到执行的文件当中。常用于包含数据库或者配置文件等,但是任何的PHP文件都可以包含。
  • 包含格式
    • 指令格式: include './ dog.php'
    • 函数调用: include ( './ dog.php')
  • 返回值: int 1。

include_once 单次的文件包含

  • 作用:相当于将文件的内容复制到执行的文件当中。但是如果文件已经包含过,将不再包含,返回true。
  • 包含格式
    • 指令格式: include_once './ dog.php'
    • 函数调用: include_once ( './ dog.php')
  • 返回值: 第一次包含返回1,以后包含相同文件返回true。

require 文件包含

  • 请求,需要,作用和include几乎相同, 将一个文件请求到另一个文件中。
  • 包含格式
    • 指令格式: require './ dog.php'
    • 函数调用: require ( './ dog.php')
  • 返回值:int 1。

require_once 单次的文件包含

  • 作用相当于require的方式,仅包含一次,功能类似于include_once 都是一次包含。
  • require 和 require_once 的区别相当于 include 和 include_once 的区别。
    • 包含格式
      • 指令格式: require_once './ dog.php'
      • 函数调用: require_once ( './ dog.php')
  • 返回值: 第一次包含返回1,以后包含相同文件返回true。

include VS include_once

  • include包含文件可以包含多次,而include_once只能包含一次。
  • include效率略高于include_once,因为include_once需要判断。
  • include包含文件成功时返回数值整型1。
  • include_once第一次包含返回1,以后包含相同文件返回true。

include VS require

  1. include 包含文件失败,提示 waring 级别错误,后续代码继续执行。
  2. require包含文件失败,则提示 error 级别错误,后续代码不再执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值