Blogger Information
Blog 37
fans 0
comment 0
visits 32132
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
命名空间的声明和作用,非限定/限定/完全限定名称空间,use导入类别名或类空间别名的方法--2018年9月7日13时52分
新竹网络_Terry的博客
Original
2383 people have browsed it

这一节课讲的是命名空间的知识,主要内容是命名空间的声明和作用,非限定/限定/完全限定名称空间,use导入类别名或类空间别名的方法。

代码


实例

<?php
namespace one{
    class Demo{
        public $name='peter zhu';
    }
    const SITE='php中文网';
    function add($a,$b){
            return $a+$b;
    }

}

namespace two{
    class Demo{
        public $name='朱老师';
    }
    const SITE='www.php.cn';
    function add($a,$b){
        return $a+$b;
    }
}
namespace {
    echo (new one\Demo())->name.'<br>';
    echo (new two\Demo())->name.'<br>';
    echo one\SITE.'<br>';
    echo two\SITE.'<br>';
    echo one\add(1,2).'<br>';
    echo two\add(3,4);

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

预览图

L396E_67907`J9}32I[Q5$M.png

代码


实例

<?php
//声明命名空间:one
namespace one;
use one\two\three\Demo as Demo1;

class Demo{
    public $name='peter zhu';
}
const SITE='php中文网';
function add($a,$b){return $a+$b;}
echo (new Demo1())->name;





//声明命名空间:one\two\three
namespace one\two\three;
class Demo{
    public $name='朱老师';
}
const DOMAIN ='www.php.cn';
function add($a,$b){return $a+$b;}

运行实例 »

点击 "运行实例" 按钮查看在线实例

预览图

N8K`@P8M8]9SXD{6H2U]}2C.png

非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?

1.非限定名称,或不包含前缀的类名称,例如 $comment = new Comment();。如果当前命名空间是Blog\Article,Comment将被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

2.限定名称,或包含前缀的名称,例如 $comment = new Article\Comment();。如果当前的命名空间是Blog,则Comment会被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

3.完全限定名称,或包含了全局前缀操作符的名称,例如 $comment = new \Article\Comment();。在这种情况下,Comment总是被解析为代码中的文字名(literal name)Article\Comment。

在这里创建一个Blog 空间,使用非限定名称,表示当前Blog空间,实例化以后这个调用将被解析。使用限定名称,表示相对于Blog空间,实例化以后这个调用将被解析成 Blog\Article\Comment(),注意类前面没有反斜线。使用完全限定名称,表示绝对于Blog空间,实例化以后这个调用将被解析,注意类前面有反斜线和没有反斜线区别。

总结:

1、类,函数,常量都是全局有效,包括在函数中也可以直接使用,因此,在全局中不允许有重名的类,函数和常量,如果想从外部导入一个函数库或类库,他们的函数名,类名极有可能与当前脚本冲突,命名空间就是这样一套解决方案,他不仅可以让用户为全局成员起一个较短的名称,又解决了第三方资源的引入带来的重名问题。

2、命名空间默认从全局开始定位,全局空间用\表示,类似于根目录

3、php命名空间:非限定名称、限定名称、完全限定名称




Correction status:qualified

Teacher's comments:
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