编程之路之php核心编程命名空间详解
一、命名空间概述
1、什么是命名空间?
- 命名空间是一种封装事物的方法;例如:函数、类、方法等。
- 命名空间作用:用来解决类名或应用程序名冲突问题;
- 举例:项目中会用到第三方类,第三方类加载进来后,可能与项目中的类名冲突。
2、定义命名空间的要求
- 使用namespace关键字,来声明一个命名空间;
- 所有代码都可以存在于命名空间中,但是,只有三种代码会受到空间影响:类、常量(const)、函数。
- 除了类、常量、函数代码外,其它代码可以写在空间中,但不受空间影响。其它代码相当于”全局代码”。全局代码可以在”任何地方”都能直接使用。
- 全局代码所在的空间,称为”根空间”、”全局空间”,相当于windows系统的”桌面”。
- 声明命名空间的语法,是PHP脚本的第1行代码;空格、空行都不可以;
- 命名空间是虚拟的空间。
3、定义命名空间语法格式
4、举例:定义单个命名空间
二、定义子命名空间
1、描述
文件夹可以有子目录的情况,命名空间也有子空间情况。
目录的分割符号正斜杠(/),空间路径的分割符是反斜杠(\)。
举例:App\Home\Controller。
2、举例说明
三、同一文件同时定义多个命名空间
1、简单组合语法
2、大括号语法
提示:用大括号把空间的代码包起来。
3、不包含在命名空间中的代码
如果一个文件用大括号语法定义多个命名空间,如果要写全局代码,还不想把全局代码加到某个命名空间中,该怎么写?
四、使用命名空间
1、文件系统中访问文件的方式
- 相对文件名。如果访问 a.txt 文件,它的完整的访问路径是:curDir/a.txt
- 相对路径名。如果访问 a/a.txt 文件,它的完整的访问路径是:curDir/a/a.txt
- 绝对文件名。如果访问 /a/a.txt文件,它的完整的访问路径是:/a/a.txt
2、访问命名空间中元素的方式
- 非限定名称(不含前缀)。如果访问 $obj = new Student(),它的完整路径是:$obj = new curSpace\Student()
- 限定名称(含有相对前缀)。如果访问 $obj=new Home\Student(),
- 它的完整路径是:$obj = new curSpace\Home\Student()
- 完全限定名称(含有绝对前缀)。
- 如果访问 $obj = new \App\Home\Controller\Student()
- 它的完整访问路径:$obj = new \App\Home\Controller\Student()
3、举例说明
五、namespace关键字和魔术常量__NAMESPACE__
1、namespace关键字
- namespace含义之一:声明空间关键字;
- namespace含义之二:可以用来直接代码当前空间名,相当于self关键字。
2、魔术常量__NAMESPACE__
描述:获取当前命名空间的字符串名称。
六、命名空间的别名/导入
1、描述
- 首先导入空间中的类,常量和函数不能导入。
- 使用use关键字来导入空间中的类。例如:use App\Home\Controller\Student
- 使用use关键字来导入空间名。例如:use App\Home\Controller;
- 使用as关键字,可以给空间或类起个别名。
- 给空间起别名:use App\Home\Controller as Controller
- 给空间中的类起别名:use App\Home\Controller\Student as Student2
2、举例说明
我是小咖
发个邀请:
如果你正好想学习php,可以与我一起交流,我的VX:feilueze333。下面资料免费赠送。