博客列表 >匿名函数,命名空间,类的认识--------2019.09.29

匿名函数,命名空间,类的认识--------2019.09.29

刂艹亻的博客
刂艹亻的博客原创
2019年10月09日 15:56:16717浏览

匿名函数,命名空间,类的认识

实例代码

实例--匿名函数

<?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 来声明,首字母一般大写 ,里面可以有属性,方法等等
一般情况下。想要访问类中的属性或方法,要先实例话类的对象,然后用对象利用->符号来访问相应的成员;

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议