PHP 函数

196 阅读2分钟

1. 函数

函数是完成特定功能的代码段

函数分为内置函数和自定义函数

1.1. 函数的构成

1.1.1. 函数名

函数名必须遵守标识符的命名规则

函数名不区分大小写

不支持函数重载,即不允许定义同名的函数,即使参数或返回值不同

1.1.2. 参数

参数可以有 0 个、1 个或多个

参数用 , 分隔

参数可以是任意类型

参数可以通过值传递或通过引用传递,引用传递的参数之前需要添加 &

参数分为必选参数和可选参数,必选参数在可选参数之前,可选参数需要提供默认值

可以在参数之前添加 类型,进行参数的类型声明

可变数量的参数之前需要添加 …,可变数量的参数是参数组成的索引数组

1.1.3. 返回值

返回值可以是任意类型

return 语句是可选的,如果省略 return 语句,则返回值为 null

return 语句会立即中止函数的运行

可以在参数列表之后添加 :类型,进行返回值的类型声明

1.1.4. 变量

变量分为全局变量和局部变量,全局变量在函数外部定义,作用域在函数外部,局部变量在函数内部定义,作用域在函数内部

局部变量分为静态变量和动态变量,静态变量使用 static 进行定义,只初始化一次,在函数执行完毕后不立即释放,动态变量在函数执行完毕后立即释放

通过使用 global 或 $GLOBALS,可以在函数内部访问全局变量

1.2. 函数的定义

function 函数名(参数列表)
{
    return 返回值;
}

1.3. 函数的调用

函数名(参数列表);
  • 函数的调用可以在函数的定义之前或之后

2. 递归函数

2.1. 概念

递归函数是在函数内部调用自身的函数

尽量避免使用递归函数

2.2. 语法

function 函数名(参数列表)
{
    函数名(参数列表);
}

3. 可变函数

3.1. 概念

可变函数是通过存储函数名或方法名的变量来调用函数或方法

可变函数可以用于函数或方法,不能用于语言结构

3.2. 语法

$变量名 = ‘函数名’;
$变量名(参数列表);

$变量名 = ‘类名::静态方法名’;
$变量名 = [‘类名’, ‘静态方法名’];
$变量名 = [$对象名, ‘静态方法名’];
$变量名 = [$对象名, ‘方法名’];
$变量名(参数列表);

4. 匿名函数

4.1. 概念

匿名函数也叫闭包函数,是一种没有指定名称的函数

匿名函数经常用作回调函数类型的参数

4.2. 语法

function(参数列表) use (外部变量列表)
{
}
  • 匿名函数通过 use 使用父作用域中的变量
  • 外部变量不能是 $this、超全局变量、和参数同名的变量
  • 外部变量可以通过值传递或通过引用传递,引用传递的外部变量之前需要添加 &
  • 对象类型的外部变量之前不需要添加 &,因为对象类型的变量默认通过引用传递
  • 在类的方法中使用的匿名函数,可以直接使用 $this

5. 函数处理函数

5.1. 检查函数是否存在

function_exists(函数名)

5.2. 获取函数的参数的数量

func_num_args()

5.3. 获取函数的参数列表

func_get_args()
  • 返回值是参数组成的索引数组

5.4. 获取函数的参数

func_get_arg(参数索引)
  • 参数索引从 0 开始

5.5. 调用函数

call_user_func(函数名[, 参数1, 参数2, …])

5.6. 调用函数

call_user_func_array(函数名, 参数列表)
  • 参数列表是参数组成的索引数组