回顾
函数:
普通函数
有参数
有默认值
有返回值
return 和 echo 的区别?
全局变量
局部变量
超全局变量
$_GET
$_POST
$_REQUEST
$_SERVER
$_FILES
$_COOKIE
$_SESSION
【静态变量】 重点
function total()
{
static $num = 0;
$num++;
echo $num.'<br />';
}
total(); // 1
total(); //2
total(); //3
total(); //4
这个变量只会初始化一次,在运行的时候会记录上一次的值 static的变量不会销毁
【内部函数重复定义的问题】
1、通过静态变量解决
2、通过判断这个函数是否存在
function_exists()
//传入函数名 如果函数存在返回真,如果函数不存在返回假
3、判断这个函数是否可以被调用
is_callable();
//如果这个函数可以调用返回真,如果不可以调用返回假
//函数存在与否
【类型约束】
function sum(int $num1 , int $num2)
{
return $num1 + $num2;
}
如果你限制了你的形参的类型,你就必须要传入对应的类型
否则报错
function sum($num1 , $num2):string
{
//return $num1 + $num2;
return 1;
//echo 1; ×
}
var_dump(sum(1,2));
就是限制你的返回值的数据类型 必须是字符串
function info($name , $age ,$sex):int
{
return '我的名字是'.$name.'我的年龄是'.$age.'我的性别是'.$sex.'<br />';
}
info('张三','十二','保密');
//这么写代码没意义
【严格模式】了解一下下
//严格模式 了解就行了不做为重点
declare(strict_types = 1);
function sum($num1 , $num2):string
{
//return $num1 + $num2; // int 3
//return 'a';
return 1;
}
var_dump(sum(1 , 2));
function sum():int
{
return 2.3;
}
var_dump(sum());
如果你开启了严格模式的话,你的返回值限制了什么类型
你就必须要返回什么数据类型
不然报错
【call_user_func】
解释:它必须依赖于一个回调函数,必须传入一个函数名,并且用引号引起来啊
第一种用法:
call_user_func('函数名');
第二种用法:
call_user_func('函数名', 实参1,实参2,实参n......)
【引用传参】
$num1 = 12;
function yiyong(&$num2) //12
{
$num2 = 18;
echo $num2;
}
yiyong($num1); //12
echo $num1;
解释:$num1 和 $num2 发生了引用的关系
【递归】
【可变参数长度】
func_get_args()
获取所有的实参,以数组的方式返回
func_get_arg(下标)
根据你传入的下标获取你对应的元素(值)
func_num_args()
返回你传入实参的总个数
【php7.0特性】(了解就行了)
function test(...$arr)
{
var_dump($arr);
}
test(1,2,3,4,5,6,7,8);
//以数组的接收每一个实参
function test($num1 , $num2 , $num3)
{
echo $num1;
echo $num2;
echo $num3;
}
//test(1,2,3);
$arr = [1,2,3,4];
test(...$arr);
//以数组的方式进行传参
【变量函数】
就是把一个函数名赋值给于一个变量
变量名字+() == 函数名+();
【回调函数】
它是变量函数的变形,可以通过变量函数或者回调函数来完成一些复杂的功能
如果你在看手册的时候看到了 callback 就是要求你必须要传入一个回调函数
【匿名函数】
定义:就是没有名字的函数 又叫做闭包
如果你想使用匿名函数的话必须赋值给于一个变量
变量名+();