批改状态:合格
老师批语:use 不能替代include/require , 这点要记住
一、匿名函数的三个应用场景。
1,匿名函数作为值使用
$val = function ($a,$b){
return $a+$b;
};
echo $val(3,4); 2,匿名函数作为回调使用
$arr = [1,3,4,5,66,2];
//usort 自定义数组排序
usort($arr,function($a,$b){
return $a - $b; //从小到大
return $b - $a; //从大到小
});
echo '<pre>' . print_r($arr,true) 3,匿名函数父作用域变量
function fun(){
$name='匿名函数';
return function () use($name){
return $name;
}
}
echo fun()();总结:匿名函数也称闭包函数,与JS的闭包不同,请勿混淆。
二、命名空间。
默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。
命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间
//多个命名空间的使用场景
//namespace: 创建命名空间, 脚本的第一行代码
namespace one{
class test
{
//...
}
}
namespace two{
class test
{
//...
}
}
namespace three{
class test
{
//...
}
}
//创建全局空间
namespace {
class test
{
//...
}
}三、类与对象的关系
//1,声明命名空间
namespace demo;
//2,创建类
class Demo {
//定义属性,声明类型
public $name = '姓名';
public $sex = '性别';
}
//3,创建类的实例
$obj = new Demo();总结:
命名空间可防止类,函数,变量的命名重复;应用对象一般为,类,常量,对象和接口四种。
注意:use就相当于一种声明,并不解析和加载。也就意味着还是得用require或者include将文件包含进来,或者使用autoload自动加载;正因为需要进行文件包含,而不是直接通过命名空间进行加载,所以PHP文件的命名空间声明和文件在磁盘中的实际位置并没有关联;如果不声明命名空间,则默认为全局命名空间。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号