Blogger Information
Blog 12
fans 0
comment 0
visits 9329
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
匿名函数和命名空间的使用场景
这位同学问得好的博客
Original
787 people have browsed it

一、匿名函数的三个应用场景。

    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文件的命名空间声明和文件在磁盘中的实际位置并没有关联;如果不声明命名空间,则默认为全局命名空间。


Correction status:qualified

Teacher's comments:use 不能替代include/require , 这点要记住
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post