加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP命名空间 PHP解析之namespace

发布时间:2022-10-28 13:31:21 所属栏目:PHP教程 来源:转载
导读: 为了更好的说明问题,假设主文件为 index.php,被引入的文件为 a.php。以两个文件为例来说明,使用 namespace 与 不使用 namespace 的区别。
大致分为四种情况:
根命名空间和普通命名空间

为了更好的说明问题,假设主文件为 index.php,被引入的文件为 a.php。以两个文件为例来说明,使用 namespace 与 不使用 namespace 的区别。

大致分为四种情况:

根命名空间和普通命名空间做何解释?

任何 PHP 文件中函数、类、常量等定义都是放在命名空间之中的,当使用这些定义的时候会去命名空间中寻找。命名空间细分为根命名空间和普通命名空间。如果在 PHP 文件中没有使用 namespace ,则当前文件中的函数、类、常量等定义默认存储在根命名空间中,如果有使用 namespace X,则存储在普通命名空间 X 中。

CASE1 : 根命名空间 + 根命名空间

php 下划线命名_PHP命名空间_php 驼峰命名

index.php 文件中代码可区分为两类:定义部分,逻辑部分。

定义部分会根据情况放置到不同的命名空间中,CASE1 情况下,index.php 文件本身定义的以及从 a.php 中加载的都会存储在大盒子(根命名空间),逻辑部分在调用时会从大盒子中寻找。

CASE2 : 根命名空间 + 普通命名空间

php 下划线命名_PHP命名空间_php 驼峰命名

CASE2 情况下,因为 a.php 定义了 namespace a,所以对于 index.php 文件来说PHP命名空间,其对应的命名空间既有大盒子(根命名空间),也有小盒子(普通命名空间a),如图,大盒子和小盒子彼此隔离,意味着大盒子里可以有 test(),小盒子里也可以有 test(),两者并不会相互冲突,调用的时候有一些关键点要注意。这部分在文章结尾会做说明。

CASE3 : 普通命名空间 + 根命名空间

php 驼峰命名_php 下划线命名_PHP命名空间

CASE3 看起来只是将 CASE2 的顺序变更了一下,连图好像都没有什么区别。实质上的区别在于调用。工程的关键在于细节,这部分在文章结尾会做说明。

CASE4 : 普通命名空间 + 普通命名空间

php 驼峰命名_PHP命名空间_php 下划线命名

CASE4 和前面 CASE 的不同在于,index.php 和 a.php 都定义了 namespace ,应该是没有根命名空间的,这里画出来是为了强调,根命名空间必然存在,只不过在当前情形下,根命名空间没有存储任何定义而已。

为了更好的理解上诉表达,针对不同 CASE 的情况,我构建了一些简单的测试代码,并在代码文件当中附带了说明,主要是前文所说的如何正确调用。可以去我的github下载不同 CASE 的测试文件。

更多文章,可查看个人博客。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!