命名空间访问|学习笔记

简介: 快速学习命名空间访问,之前学习了空间,子空间,定义了空间元素,但未尝试去访问里面的内容。所以接下来学习在面对不同空间里面的元素同名后我们该如何访问内容。目标:掌握命名空间里面的元素调用方式如何调用,能够用合适的方式去选择性实现调用空间元素。

开发者学堂课程【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();

具体输出如下图:

image.png(非限定名称只能访问当前文件夹,所以输出是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

image.png(限定名称一定是基于当前空间,所以等价于space\space1\diaplay( ) 。)

注意:限定名称访问好比访问当前文件夹下的子文件夹内容(针对当前空间的子空间访问)

3、完全限定名称访问,即从根目录(全局空间)开始访问,使用\作为全局空间开始符号。

完全限定名称访问代码为:

\space\display();        输出结果为space

\space1\display();       输出结果为space1

\space\space2\display(); 输出结果为space\space2

image.png注意:完全限定名称访问好比从磁盘根目录对应路径下的内容(绝对路径)


三:小结

1.命名空间的访问分为三种模式

(1)非限定名称访问,直接访问元素本身,代表当前所属空间(当前目录)

(2)限定名称访问,使用空间名+元素,代表访问当前空间子空间(当前目录子目录)

(3)完全限定名称访问,使用全局空间开始(最开始加\),代表从全局开始进行访问(根目录)。

2.空间元素访问方式选择

(1)当前空间内,一般使用非限定名称访问。

(2)不在当前空间,一般使用完全限定名称访问。

(3)在实际开发中:我们会对项目进行深度封装处理,尽量让开发者可以使用非限定名称访问(开发效率高)。

相关文章
|
8月前
应用命名空间
应用命名空间
55 2
|
8月前
|
Kubernetes 容器 Perl
k8s命名空间
k8s命名空间
|
8月前
|
C++
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
193 0
|
3月前
|
JSON 运维 Kubernetes
|
8月前
|
编译器 C++
C++入门(命名空间)
C++入门(命名空间)
|
8月前
|
C++
【c++】命名空间
【c++】命名空间
【c++】命名空间
|
8月前
应用命名空间和实例命名空间
【2月更文挑战第15天】应用命名空间和实例命名空间。
53 2
|
8月前
|
人工智能 编译器 C语言
|
算法 编译器 C语言
C++最简单的程序和命名空间
C++最简单的程序和命名空间
C++(命名空间的使用小结)
C++(命名空间的使用小结)

热门文章

最新文章