Correction status:qualified
Teacher's comments:命名空间, 就是电话区号, 并无特别之处
匿名函数,命名空间,类的认识
实例代码
<?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 来声明,首字母一般大写 ,里面可以有属性,方法等等
一般情况下。想要访问类中的属性或方法,要先实例话类的对象,然后用对象利用->符号来访问相应的成员;