命名空间引入|学习笔记

简介: 快速学习命名空间引入,理解空间引入的逻辑和优势,掌握空间引入

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

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


命名空间引入


内容简介:

一、命名空间引入概念

二、空间元素引入

三、别名使用

四、示例

五、小结


一、概念

1.命名空间引入:

是将另外一个空间的元素引入到当前空间来,当作当前空间的元素访问

空间元素引入可以减少复杂的完全限定名称访问,取而代之的是非限定名称访问

可以快速的实现将当前需要使用的空间元素引入到当前文件

空间引入语法:use关键字

//元素关键字:默认是类,可以有 function (函数)和 const (常量)

Use[元素关键字] [\]空间名\元素名;#空间名是一级空间(全局空间之下)

引入过程可能会出现冲突问题,命名空间重名后,可以使用别名

2.别名:

引入的元素与当前空间已有元素重名或者想换成其他合适的名字

//使用别名后,原来的名字在当前那就不可用,只能使用别名

Use [元素关键字]空间名\元素名 as 别名;

3.空间元素引入:

可以一次性引入一个空间的所有元素,或者某个空间指定类型的多个元素(批量引入)

//空间引入是将被引入的空间的最后一级空间,当作当前空间的子空间

//类引入不需要 class 关键字(默认就是 class)

具体语法如下:

# 引入多个元素

Use [元素关键字//例如类 class,class省略]空间名\元素名1[as 别名],空间名\元素名2...;

# 空间名可以不同,但是元素类型必须相同

#引入空间(全部元素)

Use 空间名;   #将当前引入的空间(最后一级)当作当前所在空间的子空间 //当前在文件夹下,引入了一个软件文件夹,如果在软件文件夹下创建了一个面向对象,那么面向对象就是子文件夹,如图:

image.png 


二、示例

1.空间引入方式:use 关键字

Namespace space;

Class  man{}

Namespace space1

# 引入空间元素

Use space\man

New man();

注意:use 进行空间包含的时候,默认是从全局空间开始构建空间路径的(不是自己空间的相对路径),所以上述代码等价于以下代码

Namespace space

Class man{}

Namespace space1;

#引入空间元素

Use\space\man;

举例:

在web下新建一个 300namespace_use.php

<?php

#空间引入

Namespace space;

Function dispaly(){

Each)_NAMSPACE_,’<br>’;

}

Class man{}

#另外空间(另外文件)

Namespace space1;

#直接使用:完全限定名称

$m1=new\space\man();

Var_dump($m1);

# 元素引入(类)

Use space\man;

Use\space\man;

New man();

2.空间引入的元素默认是类,如果要引入其他元素,就必须使用相应关键字:function(函数)和const(常量)

Namespace space

Function display(){}

Class man{}

Const PI=3.14;

image.png# 引入函数

Use function1 space\display

Dispaly();

结果如下:

#引入常量

Use const space\PI;

Each PI;

结果如下:

image.png以上是元素不同的引入方式,输入use对应的class,元素引入针对类。

3.如果被引入的元素在当前空间已经存在,则会出现重名,解决方案是使用别名as alias

Namespace space;

Function dispaly(){}

Class man{}

Const PI = 3.14

Namespace space1;

Class man{}

#引入空间元素

Use space\man ;   #错误:当前空间已经存在man

Use space\man as m;

Use function space\dispaly as dis;

Use const space\PI as D;

举例:
Const PI = 3;

# 引入常量

# use const space\PI;

# 元素别名

Use const space\PI as P;

Each pi;

Each p; //访问被引入常量

任何内容都可以别名:类、方法、常量 (原本的名称不可再用)

4.一旦引入的时候使用了别名,那么在使用的时候就直接通过别名使用

Namespace space;

Function dispaly(){}

Class man{}

Namespace space1;

Class man{}

#引入空间元素

Use space\man as m;

New m();     #引用别名

5.如果一个空间有多个元素要引入。那么可以进行一次引入多个,使用逗号,分隔即可(前提属于同类)

Namespace space;

Function dispaly(){}

Class man{}

Class woman{}

Namespace space1;

Class man{}

# 一次引入多个

Use space\man as m,space\woman; # 虽然可以批量引入(不同空间也行),但是每个元素都需要带上空间

# 引入了一个 man 类别名为 m ,woman 类没有定义别名

举例:

Class woman{}

Class ladyboy{} //这里使用了两个元素,非一个

# 批量引入元素

Use space\woman as W,space\ladyboy as L;

new W();

new L();

6.如果说确定一个空间里的所有元素都需要引入进来,也可以直接引入空间

Namespace space;

Class man{}

Namespace space1;

# 引入空间

Use space;

举例:

Namespace space1;

Const PI = 3;

#引入空间

Use space;

# 相当于将引入的空间的末级空间当作当前空间的子空间

Namespace space1\space;

# 因为引入的是当作子空间:所以需要使用限定名称访问

# Display();   # 错误:空间引入不是将空间元素全部纳入到当前空间里

# 正确访问

Space\dispaly();  //限定名称访问

7.如果直接进行空间引入,非限定名称的访问的只会是当前自己空间而非引入的空间,要访问引入空间,需要使用限定名称访问:即引入的空间最后一级空间名字+元素(引入空间当作空间的子空间)

Namespace space\space1\space2;

Class man{}

Namespace space3;

Class man{}

# 引入空间

Use space\space1\space2;

New man();    # 访问的是space3\man

New space2\man();   # 使用引入空间的最后一级空间访问

// 这种方式应用不多,较为复杂,需要用到限定名称,一般引入元素居多,引入空间居少


三、小结

1.空间引入是解决访问时的麻烦:有完全限定名称(限定名称)变成非限定名称访问

2.空间元素都可以引入,但是引入方式有区别

(1)类直接引入

(2)函数需要在use之后跟关键词 function

(3)常量需要在use之后跟关键词 const

3.空间引入过程中如果出现重名,需要使用别名来处理,引入后在空间里可以直接访问别名

4.可以一次性引入多个空间内的多个元素

(类型相同:每个元素必须在前面加上空间路径)

5.如果必要的情况下,也可以直接使用空格引入

但是要注意引入空间的元素不允许直接使用非限定名称访问,必须使用被引入空间的最后一级空间+元素访问(不常使用,引入方便但是使用不方便)

相关文章
|
18天前
|
C++
C++命名空间学习应用案例
C++中的命名空间示例:通过`my_namespace`防止命名冲突,包含`print_message()`函数,在`main()`中调用时需加上命名空间前缀`my_namespace::`。
14 3
|
1月前
|
C++
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
30 0
|
6月前
|
JavaScript 前端开发
带你读《现代TypeScript高级教程》六、命名空间和模块(1)
带你读《现代TypeScript高级教程》六、命名空间和模块(1)
|
6月前
|
JavaScript 前端开发
带你读《现代TypeScript高级教程》六、命名空间和模块(2)
带你读《现代TypeScript高级教程》六、命名空间和模块(2)
|
8月前
|
算法 编译器 C语言
C++最简单的程序和命名空间
C++最简单的程序和命名空间
|
9月前
|
Java
springboot自定义外部扩展文件
在springboot启动的时候调用run方法,可以看到run方法里面的内容,其中有一个getRunListeners方法
Yii2.0的命名空间是什么?底层原理是什么?
Yii2.0的命名空间是什么?底层原理是什么?
|
PHP 开发者
命名空间基础|学习笔记
快速学习命名空间基础,了解命名空间的基本语法,掌握命名空间的限制逻辑和基本应用。
57 0
|
PHP 开发者
命名空间总结|学习笔记
快速学习命名空间总结
65 0
命名空间总结|学习笔记