命名空间访问|学习笔记

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

开发者学堂课程【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)在实际开发中:我们会对项目进行深度封装处理,尽量让开发者可以使用非限定名称访问(开发效率高)。

相关文章
|
存储 安全 数据可视化
|
存储 监控 数据挖掘
云MES:数字化转型的引擎,企业上云的强力推手
云MES系统与企业上云的紧密合作,使得企业能够更加灵活地应对市场变化,快速响应客户需求。无论是新产品的快速研发与上市,还是生产线的快速调整与优化,云MES系统都能提供强有力的支持,助力企业在激烈的市场竞争中占据先机。
852 10
云MES:数字化转型的引擎,企业上云的强力推手
【qt】 QGridLayout布局管理器怎么用?
【qt】 QGridLayout布局管理器怎么用?
604 0
|
前端开发 JavaScript Java
SpringCloudGateway网关服务实现文件上传功能
SpringCloudGateway网关服务实现文件上传功能
383 9
|
Kubernetes jenkins 持续交付
Kubernetes CI/CD 集成:持续交付的最佳实践
【8月更文第29天】随着微服务架构和容器化的普及,Kubernetes 成为了运行容器化应用的事实标准。为了确保应用能够快速迭代并稳定发布,持续集成/持续部署(CI/CD)流程变得至关重要。本文将介绍如何将 Kubernetes 集成到 CI/CD 流程中,并提供一些最佳实践。
842 1
|
搜索推荐 UED
【Prompt Engineering:自我一致性、生成知识提示、链式提示】
自我一致性是提示工程技术之一,旨在改进链式思维提示中的解码方法。通过少样本CoT采样多个推理路径并选择最一致的答案,有助于提升涉及算术和常识推理任务的性能。例如,在解决年龄相关问题时,通过多次采样并挑选多数答案来提高准确性。此外,生成知识提示技术可预先生成相关信息辅助模型做出更准确预测,进一步优化模型表现。链式提示则通过将复杂任务分解为多个子任务来逐步处理,从而提高模型的透明度和可靠性,便于定位和改进问题。
590 0
【Prompt Engineering:自我一致性、生成知识提示、链式提示】
|
存储 缓存 监控
如何提高服务器CPU性能?
如何提高服务器CPU性能?
1298 3
|
Kubernetes 负载均衡 算法
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
461 1
|
消息中间件 分布式计算 Hadoop
利用Hadoop进行实时数据分析的挑战与解决方案
【8月更文第28天】随着大数据技术的快速发展,企业和组织面临着越来越复杂的实时数据处理需求。Hadoop 作为一种分布式存储和处理大数据的框架,虽然擅长于批处理任务,但在处理实时数据流时存在一定的局限性。为了克服这些限制,Hadoop 经常与其他实时处理框架(如 Apache Kafka 和 Apache Storm)结合使用。本文将探讨如何利用 Hadoop 结合 Kafka 和 Storm 实现近实时的数据处理,并提供相关的代码示例。
1001 0