开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第三阶段:命名空间访问】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/713/detail/12724
命名空间访问
内容简介:
一:命名空间访问的概念
二:命名空间访问示例
三:小结
一:命名空间访问的概念
命名空间访问是指访问不同空间里的结构元素。
1、空间里面除了函数,常量和类的其他代码,会自动执行,只有空间元素本身(函数,常量和类)是需要通过空间进行访问的。
2、在PHP命名空间中,提供了三种空间元素的访问方式。
(1)非限定名称:直接访问元素名,系统自动匹配当前空间(向上找到的的一个空间)。
(2)限定名称:带空间名字,而且是基于当前空间的子空间(相对路径,在当前空间下,找到向下的空间的),只能访问当前目录的子目录。
(3)完全限定名称:从全局空间(根目录)开始访问(绝对路径)。
二:命名空间访问示例
1、非限定名称访问:即直接访问空间元素的名字,此类访问访问的是当前代码所属空间内的元素
代码为:
#空间元素访问: 非限定名称访问
namespace space1;
function display(){
echo_ NAMESPACE , '<br>';
}
namespace space2;
function display(){
echo_ NAMESPACE , '<br>';
}
#非限定名称访问
display();
具体输出如下图:
(非限定名称只能访问当前文件夹,所以输出是space2,space1无法访问。)
注意:非限定名称访问就好比是访问当前自己文件夹下的所有文件。
2、限定名称访问:即在访问元素的前面使用相应的空间名字,非限定名称的访问是基于子空间来实现的。
代码为:
#定义子空间
namespace space\space1;
function display( ){
echo_ ‘space\space1 <br>' ;
}
#定义子空间
namespace space\space2;
function display(){
echo_ ‘space\space2 <br>' ;
#所属父空间
namespace space;
function display(){
echo_’space,<br>' ;
}
#非限定名称访问
display(); #space
:当前向上所属空间
space1\display(); #space\space1
:实际为当前空间space+space1\diaplay()
所以限定名称访问:space1\display,输出为:space\space1
(限定名称一定是基于当前空间,所以等价于space\space1\diaplay( ) 。)
注意:限定名称访问好比访问当前文件夹下的子文件夹内容(针对当前空间的子空间访问)
3、完全限定名称访问,即从根目录(全局空间)开始访问,使用\作为全局空间开始符号。
完全限定名称访问代码为:
\space\display(); 输出结果为space
\space1\display(); 输出结果为space1
\space\space2\display(); 输出结果为space\space2
注意:完全限定名称访问好比从磁盘根目录对应路径下的内容(绝对路径)
三:小结
1.命名空间的访问分为三种模式
(1)非限定名称访问,直接访问元素本身,代表当前所属空间(当前目录)
(2)限定名称访问,使用空间名+元素,代表访问当前空间子空间(当前目录子目录)
(3)完全限定名称访问,使用全局空间开始(最开始加\),代表从全局开始进行访问(根目录)。
2.空间元素访问方式选择
(1)当前空间内,一般使用非限定名称访问。
(2)不在当前空间,一般使用完全限定名称访问。
(3)在实际开发中:我们会对项目进行深度封装处理,尽量让开发者可以使用非限定名称访问(开发效率高)。