命名空间基础|学习笔记

简介: 快速学习命名空间基础,了解命名空间的基本语法,掌握命名空间的限制逻辑和基本应用。

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

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


命名空间基础


内容简介:

一:命名空间的基本语法和作用

二:具体命名空间使用步骤

三:使用具体示例

四:小结


一:命名空间的基本语法和作用

1、命名空间使用namespace关键字定义空间,定义语法为:namespace 命名空间名字;

2、命名空间必须定义在所有代码之前(前面不能有任何代码性的东西,注释除外),即我们整个代码里面第一行有效代码(从上往下)是namaspace 。

3、命名空间可以写任意内容(命名空间不是用来规范我们后续写的内容,而是规范它想规范的东西,实现分离。就如文件夹的存在不能使里面的文件怎么样,它只能保证同名的文件可以在磁盘操作。)但是只有命名空间元素真正受空间限制。

4、命名空间元素是结构性内容,不会自动运行的代码,同一脚本不允许出现同名的,有三类:常量,函数和类(接口)。


二:具体命名空间使用步骤

1、确定使用命名空间:有一些结构性的内容与其他开发者冲突(重名)

2、在一开始定义命名空间


三:使用具体示例

1、基本语法:namespace 空间名字

#定义空间

namespace my_space    #定义一个叫做my_space的空间

2、命名空间的命名规则

l 由字母,下划线和数字构成

l 可以以字母和下划线开头

较少出现单词空间名,一般使用下划线法

3、命名空间的作用:能够创建同名结构,包含函数,常量和类。

#定义空间

namespace space1; ( #后续所有结构性内容理论上都属于space1)

function display( ){

echo_ NAMIESPACE_ , '<br/>’;

const PI =3;

class Hunan{ }

#新建第二个空间:第一个空间到此结束,后序内容属于第二个空间space2

namespace  space2;

function display( ){

echo_ NAMESPACE_ ‘<br/>’;

const PI =3;

class Hunan{}

具体操作如下:

首先定义空间namespace space1 (这样后续所有结构性内容理论上都属于space1)

再把常量,函数和类放进来

function display(){

echo_ NAMIESPACE_ , '<br/>’;

const PI =3;

class Hunan{}

放好之后运行,运行结果如下

如果还想定义一组重名的东西,则需要新建第二个空间,第一个空间到处结束,后续内容属于第二个空间space2

(系统未提示错误,因为在一个脚本中虽然出现了同名的内容,但命名空间不同,所以可以在系统并存。所以如果一个脚本想要使用命名空间,需要在最开始定义,但是一旦定义过空间,后续可以定义n个命名空间)

4、命名空间里的内容

(1)命名空间里可以定义同名的函数,常量和类(结构);因此此类结构不允许重名,这些是命名空间规范的目标(称为空间元素)

(2)命名空间里可以有其他代码(定义除三种空间元素以外的代码执行:系统不干涉,正常执行)

如:定义结构后再定义一个变量

Namespace space

Class human{}

Function display(){}

Const PI=3.14;

$a=100;

echo $a;

5、命名空间的注意事项:命名空间的声明必须在所有代码之前。

#命名空间之前不能有任何代码

namespace  spacel;        #正确

echo  'test';

namespace  space1;    #错误:第一次命名空间之前不能有任何其他代码

注意:命名空间在一个脚本中只会定义一个(最开始) , 但是在讲课的时候可能会定义多个。


四:小结

1.命名空间是使用 namespace + 空间名字定义。

2.不同命名空间里可以定义同名的函数,常量和类(同名结构)。

3.命名空间里可以书写任意代码。

4.命名空间的定义必须在脚本的最前面。

5.一个脚本中通常只会定义一个空间。

6.命名空间其实就好比是磁盘上划分的不同文件夹,用来保存同名文件。

相关文章
|
9月前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用
本文深入探讨了人工智能(AI)技术在医疗诊断领域的革新性应用,通过分析AI如何助力提高诊断准确性、效率以及个性化治疗方案的制定,揭示了AI技术为现代医学带来的巨大潜力和挑战。文章还展望了AI在未来医疗中的发展趋势,强调了跨学科合作的重要性。 ###
406 14
|
传感器 机器学习/深度学习 数据采集
2022年第十一届认证杯数学中国数学建模国际赛小美赛:C 题 对人类活动进行分类 建模方案及代码实现
本文提供了2022年第十一届认证杯数学中国数学建模国际赛小美赛C题"对人类活动进行分类"的建模方案和Python代码实现,包括数据预处理、特征提取、LSTM网络模型构建和训练评估过程。
343 11
2022年第十一届认证杯数学中国数学建模国际赛小美赛:C 题 对人类活动进行分类 建模方案及代码实现
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
484 9
|
数据挖掘 Python
如何将动态IP代理转换为静态IP代理的方法与步骤
如何将动态IP代理转换为静态IP代理的方法与步骤
628 6
|
网络架构
定义vue-router的动态路由以及如何获取传过来的动态参数
定义vue-router的动态路由以及如何获取传过来的动态参数
418 1
|
C# 开发者 索引
C# 11.0中的静态抽象成员:接口中的新变革
【1月更文挑战第25天】C# 11.0引入了接口中的静态抽象成员,这一新特性为接口设计带来了更大的灵活性。静态抽象成员允许在接口中定义静态方法和属性,并要求实现类提供具体的实现。本文将详细探讨C# 11.0中静态抽象成员的工作原理、优势及其对现有编程模式的影响,旨在帮助读者更好地理解和应用这一新特性。
|
存储 关系型数据库 MySQL
MySQL索引底层实现原理(B树和B+树)
MySQL索引底层实现原理(B树和B+树)
229 0
MySQL索引底层实现原理(B树和B+树)
|
Rust 编译器
【Rust】——函数(所有权)以及借用或引用
【Rust】——函数(所有权)以及借用或引用
|
网络虚拟化 网络架构 文件存储
DIY nas 之ZeroTier构建异地局域网
ZeroTier是一款用于构建异地虚拟局域网的工具,让你在世界任何地方访问家里的设备或者其他客户端
508 0
|
Java 应用服务中间件 网络安全
企业级Nginx实战-配置Https单向认证、双向认证
企业级Nginx实战-配置Https单向认证、双向认证
728 0
企业级Nginx实战-配置Https单向认证、双向认证