批改状态:合格
老师批语:命名空间, 就是电话区号, 并无特别之处
匿名函数,命名空间,类的认识
实例代码
<?php
//匿名函数与闭包
//php不区分匿名函数与闭包
//匿名函数,本质就是函数表达式
//应用场景-1:匿名函数作为值来使用
$sum = function ($a,$b){
return $a+$b;
};
echo $sum(25,25);//50
echo'<hr>';
//匿名函数用在什么地方
//应用场景-2:作为回调参数来使用
//回调:回头调用---某一步先决条件执行后再执行的操作
$numberPlusOne = array_map(function($number) {
return $number + 1;
}, [1, 2, 3]);
//数组单元+1
print_r($numberPlusOne);//Array ( [0] => 2 [1] => 3 [2] => 4 )
echo'<hr>';
//自定义排序
$arr = [9,6,3,8,5,2,7,4,1];
usort($arr,function($a,$b){
return $a-$b;
});
print_r($arr);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
echo'<hr>';
//作用三-3:获取父级作用域里的变量
//匿名函数引用父级元素的的值
$name = 'xiong';
$fl = function()use($name){
return $name;
};
echo $fl();
echo'<hr>';
// 案例
// 父级函数
function demo(){
$name ='zhi';
return function()use($name){
return $name;
};
}
echo demo()();//zhi
//函数的声明: function func_name() {}
//函数的调用: func_name();
//
//参数: 必选参数,可选参数/默认参数, 剩余参数
//
//匿名函数
//1. 值
//2. 回调
//3. 闭包点击 "运行实例" 按钮查看在线实例
<?php
// 命名空间
namespace _9029_1;
include __DIR__.'/inc/function.php';
function sum($a,$b){
return $a +$b;
}
//不带命名空间
echo sum(20,30);//50 执行的是当前命名空间下的sum(加法)函数
echo'<hr>';
//带了关键字namespace时执行的也是加法sum,代表namespace==\_9029_1 也就是当前的命名空间
echo namespace\sum(20,30);//50 执行的是加法运算
echo'<hr>';
echo \_9029_1\sum(30,30);//60 执行的是加法运算
echo'<hr>';
//引入其它空间的sum函数
echo \_0929_f\sum(30,15);//450 sum执行的乘积运算
echo'<hr>';
// 命名空间---类似一栋楼里面可以有好多楼层。而每个楼层又可以有许多房间
//例如一单元5楼501,502,503等等,你要去找 一单元503,只能先去找到一单元,然后去找5楼,最后找到503
namespace _1_501;
// 类的声明:关键字 class
class D501
{
// 一单元可以有501
public $name = '一单元501';
}
namespace _2_501;
class D501
{
// 二单元也可以有501
public $name = '二单元501';
}
namespace _3_501;
class D501
{
// 三单元也可以有501
public $name = '三单元501';
}
// 此时这个实例话在_3_501的命名空间下。所以只输出了该空间下的那么属性
// 通过new关键字来实例化类,成为对象,然后用对象去访问类的属性
$obj = new D501();
echo '我要去->'.$obj->name.'<br>';//我要去->三单元501
// 此时引入命名空间.。通过不同的命名空间,去实例化名称相同的类,不会有冲突
$obj = new \_1_501\D501();
echo '我要去->'.$obj->name.'<br>';//我要去->一单元501
$obj = new \_2_501\D501();
echo '我要去->'.$obj->name.'<br>';//我要去->二单元501
//命名空间的作用
//1,用来区分名称相同的类,方法,变量或其它;
//2.起到了保护作用,在不同空间的数据,不会互相干扰
// 类通过关键字 class 来声明,首字母一般大写 ,里面可以有属性,方法等等
//一般情况下。想要访问类中的属性或方法,要先实例话类的对象,然后用对象利用->符号来访问相应的成员;点击 "运行实例" 按钮查看在线实例
总结:
匿名函数,本质就是函数表达式
1,可以赋值到变量上,按值调用,但要注意,此时它的类型是对象
2,可以当成回调函数来执行
3.可以做为闭包使用
命名空间的作用
1,用来区分名称相同的类,方法,变量或其它;
2.起到了保护作用,在不同空间的数据,不会互相干扰
类通过关键字 class 来声明,首字母一般大写 ,里面可以有属性,方法等等
一般情况下。想要访问类中的属性或方法,要先实例话类的对象,然后用对象利用->符号来访问相应的成员;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号