批改状态:合格
老师批语:匿名函数就是一个一个保存在变量中的函数罢了, 一个变量的值,可以是一个函数, 如果是一个函数, 就可以加括号来调用
匿名函数三个场景代码演示
<?php
// 匿名函数, 函数表达式
// 场景1: 匿名函数可以用变量赋值形式来使用
$sum = function ($a, $b) {
return $a.$b;
};//记得这里必须加``;``分号,不加分号php会报错,闭包函数
// $sum传两个值到函数中因为函数中有两个局部变量
echo $sum('我是', '匿名函数1');
echo '<hr>';
// 2. 做为回调参数来使用
// array_map(), preg_replace_callback()方法都会用到回调函数,这是使用闭包的最佳时机!
$num=array_map(function ($number){
return $number+1;
},[1,2,3]);
print_r($num);//输出Array ( [0] => 2 [1] => 3 [2] => 4 )
// 3. 获取父作用域中的变量两种用法
//一:
$a = '我是匿名函数场景3';//在匿名函数外的变量叫父作用域变量
$aa = function () use ($a) {
return $a;
};
echo $aa();
echo '<hr>';
//二:
// a 是父函数
function a() {
// $a在匿名函数外它是匿名函数的父域中的变量
$a = '我是匿名函数场景3';
return function () use ($a){
return $a;
};//记得这里必须加``;``分号,不加分号php会报错,闭包函数
}
echo a()();点击 "运行实例" 按钮查看在线实例
二:命名空间场景演示
几个场景都写在一起了
<?php
namespace demo1;//这个一定要写在第一行 不然用的时候会出错,吸取了教训了!!!。
include __DIR__ .'/demo2.php';
//以下是同目录不同文件的demo2.php里面的代码
// namespace demo2;//命名空间不能用纯数字命名
// function a ($a){
// return $a;
// }
include __DIR__ .'../fc/demo3.php';
//以下是/fc/demo3.php里面的代码
// namespace demo3;//命名空间不能用纯数字命名
// function a ($a){
// return $a;
// }
//命名空间不能用纯数字命名
function a ($a){
return $a;
}
// 本文件的命名空间访问
echo a('命名空间1');// 不写命名空间标识符也可以默认是这样的:echo namespace\a('命名空间');
echo'<hr>';
// 同级目录的命名空间访问
echo \demo2\a('命名空间2');//demo2是同目录下的demo2.php文件里的空间命名
echo'<hr>';
// 其它目录的命名空间访问
echo \demo3\a('命名空间3');//demo3是fc目录下的demo3.php文件里的空间命名
?>点击 "运行实例" 按钮查看在线实例
三:类与对象
<?php
class cs{
public $ceshi='类与对象简单理解';//public为可见性,全局可见 $ceshi是类属性
}
$a=new cs();//类new出来得到一个对象a
echo $a->ceshi;//访问对象a里面的属性ceshi
?>点击 "运行实例" 按钮查看在线实例
四:总结
空间命名的标识符一定要写在第一行,不然会报错,吸取了教训了。
命名空间不能用纯数字命名
命名空间的作用可以防止类,函数,全局变量的重名。
匿名函数的回调有点绕脑子,写出来的结果跟脑子第一次想的不一样,理解就是还可以放到函数中使用
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号