全局空间|学习笔记

简介: 快速学习全局空间,了解全局空间的概念,掌握全局空间与其他命名空间的关系以及合作模式。

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第三阶段全局空间】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/713/detail/12725


全局空间

 

内容简介:

一:全局空间概念

二:全局空间示例

三:小结

 

一:全局空间概念

全局空间即空间元素在没有定义空间,没有声明空间的情况下所属的空间,也是所有定义的空间的父级,即顶级空间。

l 所有空间都是从全局空间分离出来的。

l 所有不指定空间的元素本质都属于全局空间。

l 全局空间与其他空间存在空间约束关系,在进行文件包含时需要注意到空间关系。

 

二:全局空间示例

1、没有指定空间的元素所属的空间属于全局空间

#不定义空间

function  display(){

echo__ NANESPACE__,' <br/>’;

}

2、所有的空间本质都是在全局空间下的划分

#定义空间

namespace space ;

function diasplay( ){

echo__NAMESPACE__,’<br/>’;

}

# space 空间属于从全局空间里划分出一小部分用于 space空间管理

3、全局空间元素的访问:使用完全限定名称访问。

<?php

#全局空间

function  display(){

echo__NANESPACE__,'全局空间’

}

# 非限定名称访问:访问当前空间

display();

image.png#完全限定名称访问

\display();

image.png若想定义 space,必须在全局空间之后再划分,因为全局空间掌控所有,只能在全局空间划分小区域。

4、一旦命名空间出现,那么空间元素(类、常量和函数)的访问就被限定在空间内,如果使用非限定名称访问,那么系统会以下解析逻辑(限定名称或者完全限定名称是直接按路径准确找)。

(1)首先一定是在自己空间内查找。

(2)如果找不到元素,不同空间元素的处理不同。

●系统常量、系统函数如果找不到,会自动升级去全局空间找(也就是能找到),前提是 space 没有才会升级去全局空间找。

function  display(){

echo__NANESPACE__,'全局空间’

}

# 非限定名称访问:访问当前空间

display( );

#完全限定名称访问

\display( );

#访问系统函数

echo count([1,2,3]);   #系统函数和常量,系统会自动升级到全局空间找

echo\count([1,2,3]);

image.png●系统类,系统是不会自动去全局空间找的(报错, 提示当前所属空间内元素找不到)。

#访问系统类

new stdclass();  #错误:系统类,系统不会升级去全局空间找

image.png正确访问方式是 new stdclass(); 改为 new \stdclass();

要访问系统类,就必须明确指定它在哪可以找到,别指望系统会自动跳过空间去别的地方找。访问这种系统类一般用的是无安全限定访问方式,从根目录去找,自己指定路径来实现访问。

5、同样,如果一个文件有空间,包含了一个没有空间的文件(指全局空间的文件),那么要访问文件中的内容,需要使用全局空间。

#无空间文件:nospace.php

function display(){     #属于全局空间

echo__FUNCTION__;

}

#有空间文件

namespace space();

function display(){

echo’space;

}

#包含无空间文件

Include_once’nospace.php’

#访问元素

display();  #访问的是space空间下的display函数

\display(); #正确:访问全局空间的display函数

具体操作如下:

# 包含全局空间文件 (没空间)

Include  ' 28namespace_global.php

display(;

image.png 

(虽然包含的文件有空间,但是不影响包含之后的后序代码的非限定名称访问)

如果想要访问被包含文件里的元素(带空间);要根据被包含文件的空间形式来实现。

如果被包含文件是全局空间,那么使用完全限定名称访问。

使用 \display();

如果是别的空间也可以使用完全限定名称来访问,总之,完全限定名称可以解决任何访问的问题,只要存在,只要空间路径正确就一定能访问到。

 

三:小结

1、全局空间就是没有使用 namespace 定义空间的空间(所有空间本质都是在全局空间下划分)。

2、全局空间的元素访问使用完全限定名称访问。

3、系统内置的函数,常量和类都属于全局空间。(涉及到全局空间被包含到子空间里)

(1)系统函数、常量,在空间内访问的时候系统会自动在自己空间找,如果找不到会去全局空间。

(2)系统类必须使用全局空间访问: \类名。

相关文章
|
JavaScript 前端开发 Dubbo
注册中心设计 Ap 与 CP 区别|学习笔记
快速学习注册中心设计 Ap 与 CP 区别
1184 0
注册中心设计 Ap 与 CP 区别|学习笔记
|
机器学习/深度学习 传感器 人工智能
AI与未来医疗:重塑健康管理新格局随着人工智能(AI)技术的飞速发展,医疗行业正迎来一场前所未有的变革。AI不仅在数据分析、诊断支持方面展现出巨大潜力,还在个性化治疗、远程医疗等多个领域实现了突破性进展。本文将探讨AI技术在医疗领域的具体应用及其对未来健康管理的影响。
人工智能(AI)正在彻底改变医疗行业的面貌。通过深度学习算法和大数据分析,AI能够迅速分析海量的医疗数据,提供精准的诊断和治疗建议。此外,AI在远程医疗、药物研发以及患者管理等方面也展现出了巨大的潜力。本文将详细探讨这些技术的应用实例,并展望其对健康管理的深远影响。
|
缓存 JavaScript 前端开发
qiankun 微应用vue接入到基座
【10月更文挑战第4天】
|
人工智能 安全 大数据
新一代信息通信技术
新一代信息通信技术
1371 5
|
机器学习/深度学习 人工智能 自然语言处理
大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解
大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解
大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解
|
传感器 vr&ar Android开发
基于Arduino的智能眼镜
基于Arduino的智能眼镜
496 0
|
存储 网络协议 数据中心
藏不住了,这份VXLAN概述太棒了!
藏不住了,这份VXLAN概述太棒了!
283 5
|
存储 消息中间件 编解码
|
XML Java 关系型数据库
Maven实战从入门到精通(全)
目录前言1. 安装及配置2. 核心概念 前言 了解Maven的具体概念、功能、具体执行步骤以及如何搭建等 Maven 具体功能: maven 是自动化构建工具,可以部署项目;管理jar文件,自动下载jar、文档和源代码;管理jar直接的依赖以及版本;编译程序,把java编译为class;测试代码是否正确;打包文件,形成jar文件或者war文件 具体构建步骤: 构建是面向过程,主要步骤是 清理:把之前项目编译的东西删除掉,为新的编译代码做准备。 编译: 把程序源代码编译为执行代码, 把java编译成clas
861 0
Maven实战从入门到精通(全)
|
消息中间件 大数据 Kafka
消息队列使用优缺点和各种MQ适用场景
消息队列使用优缺点和各种MQ适用场景
498 0