代码块
<?php
/**
* 函数的返回值和参数
*/
//$a,$b为形参
//int前两个为类型声明,后一个为返回类型声明
function test(int $a,int $b):int
{
//$a+$b为返回值
return $a+$b;
}
//1,2为实参
echo test(1,2);
echo "<hr>";
//array_sum()
//计算数组的所有值之和,返回值是值之和
function test2(...$arr){
return array_sum($arr);
}
//...$arr可以收集参数成一个数组,剩余参数可用于pdo数据库连接
echo test2(1,2);
/**
* 回调函数与匿名函数
*/
function demo2(){
//匿名类
return new class
{
public $name = 123;
};
}
$user = demo2();
echo "<hr>";
echo $user->name;
echo "<hr>";
//匿名函数
$a = 333;
//通过use可以访问函数外部的自由变量
//闭包要改变上下文的值,需要引用传递
$closure = function ($name) use (&$a)
{
echo $name.$a."<br>";
$a = $name;
};
//匿名函数不能在前面调用
$closure('hello');
echo $a;
echo "<hr>";
//闭包经常作为函数的返回值
function demo1($q) {
return function ($w) use($q) {
return $q+$w;
};
}
echo demo1(1)(2);
效果