命名空间与自动加载系列(一)--什么是命名空间
什么是命名空间
从广义一来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。如,在操作系统中目录用来将相关文件分组,对于目录文件来说,它就扮演了命名空间的角色。
具体举个例子,文件 foo.txt
可以同时在目录 /home/greg
和 /home/other
中存在,但在同一个目录中不能存在两个 foo.txt
文件。另外,在目录 /home/greg
外访问 foo.txt
文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt
。这个原理应用到程序设计领域就是命名空间的概念。
一句话来说,一个目录中不能同时存在两个相同文件名的文件。
命名空间解决了什么问题
在PHP中,命名用来解决在创建可重用的代码时碰到的两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
官方的话比较不好理解,来看看直白的解释。一个类文件中存在两个相同的类时,那么就会报错,而命名空间就是来解决这类问题了。下面通过代码来演示:
// 文件名:A.php
class A {}
class A {}
A.php存在两个A类,运行A.php会报如下致命错误:
PHP Fatal error: Cannot declare class A, because the name is already in use in
命名空间初体验
现在使用命名空间来解决A.php文件报错的问题
<?php
namespace A;
class A {}
namespace B;
class B {}
声明命名空间
语法:namespace 自定义空间名称;
命名空间的声明一定要在代码的第一行。
错误的案例
<?php
class A {}
namespace app;
class A {}
PHP Fatal error: Namespace declaration statement has to be the very first statement or after any declare call in the script in
2021-05-13
请登录后再评论