Correction status:qualified
Teacher's comments:匿名函数就是一个一个保存在变量中的函数罢了, 一个变量的值,可以是一个函数, 如果是一个函数, 就可以加括号来调用
匿名函数三个场景代码演示
<?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 ?>
点击 "运行实例" 按钮查看在线实例
四:总结
空间命名的标识符一定要写在第一行,不然会报错,吸取了教训了。
命名空间不能用纯数字命名
命名空间的作用可以防止类,函数,全局变量的重名。
匿名函数的回调有点绕脑子,写出来的结果跟脑子第一次想的不一样,理解就是还可以放到函数中使用