0

0

PHP中的命名空间定义与使用(实例详解)

WBOY

WBOY

发布时间:2021-10-25 15:29:16

|

4712人浏览过

|

来源于php中文网

原创

在之前的文章中给大家带来了《怎样去搞定php类的继承?(总结分享)》,其中详细介绍了在php类中有关继承的相关知识,本篇我们继续来看一下php命名空间的相关知识,希望对大家有帮助!

PHP中的命名空间定义与使用(实例详解)

命名空间其实是个抽象的概念,举个例子,在我们日常生活中,操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。

那么什么是命名空间呢?其实,命名空间可以理解为封装事物的方法,在PHP中的类、函数、常量是不能够同名的,为了不让他们同名,解决三者的同名问题,所以需要用到命名空间。

在PHP中,命名空间主要用来解决用户编写的代码与PHP内部或者第三方的类、函数、常量之间的命名冲突,文件太多的时候总会有可能命名会重复;还有为很长的标识符名称创建一个很简短的名称,这样的话会提高代码的可读性。

立即学习PHP免费学习笔记(深入)”;

那么命名空间是怎样声明也就是定义和使用的呢?接下来我们来看一下应该如何定义命名空间吧!

定义命名空间

在PHP中任意正确的代码都可以包含在命名空间中,但是只有类、函数、常量等类型的代码才会收到命名空间的影响。

我们通过namespace关键字来完成命名空间的定义,它的语法格式如下:

namespace 命名空间名;

示例如下:

  • 定义两个命名空间:

  • 定义子命名空间

PHP中的命名空间与目录和文件的关系是很像的,可以允许指定层次化的命名空间名称。因此,命名空间的名字可以使用分层次的方式来定义,它的语法格式如下:

namespace App\Model;
namespace App\Controller\Home;

示例如下:

在上述事例中,创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect

  • 在同一个文件中,定义多个命名空间

我们有两种语法格式可以在一个文件中定义多个命名空间,示例如下:

首先就是简单的语法组合

倍塔塞司
倍塔塞司

AI职业规划、AI职业测评、定制测评、AI工具等多样化职业类AI服务。

下载

然后就是大括号{}

通过上述的介绍,我们已经知道了应该如何定义命名空间,只是定义命名空间还不够,我们在PHP中使用它才是比较重要的,那接下来看一下应该如何使用命名空间。

使用命名空间

在了解应该如何使用命名空间之前,我们应该要了解的是在PHP中是怎么知道要是用哪一个命名空间中的元素的,这时候我们就需要知道PHP中命名空间元素访问的原理了。首先PHP中的我们不太清楚,但是文件系统我们可以总结出访问文件的三种方式:

相对文件名、相对路径名和绝对路径名。

PHP命名空间的元素只用同样的原理,例如命名空间下的类名可以通过三种方式引出:

  • 非限定名称,或不包含前缀的类名称,例如$a = new test()或者test,如果当前命名空间是currentnamespace,那么test将被解析为currentnamespace\test。如果test的代码是全局的,不包含任何命名空间中的代码,那么test会被解析为test。

  • 限定名称,或包含前缀名称,例如$a = new subnamespace\test(),如果当前命名空间是currentnamespace,则 test 会被解析为 currentnamespace\subnamespace\test,如果test的代码是全局的,不包含任何命名空间中的代码,那么test会被解析为subnamespace\foo

  • 完全限定名称,或包含了全局前缀操作符的名称,例如$a = new \currentnamespace\test(),这种情况下,test 总是被解析为代码中的文字名 currentnamespace\test

下面是一个使用这三种方式的实例,我们需要两个 PHP 源文件,分别是 demo.php index.php,示例代码如下:

';
    }
    class foo
    {
        static function demo(){
            echo '命名空间为:Foo\Bar
'; } } /* 非限定名称 */ foo(); // 解析为 Foo\Bar\foo resolves to function Foo\Bar\foo foo::demo(); // 解析为类 Foo\Bar\foo 的静态方法 staticmethod。 echo FOO.'
'; // 解析为常量 Foo\Bar\FOO /* 限定名称 */ Demo\foo(); // 解析为函数 Foo\Bar\Demo\foo Demo\foo::demo(); // 解析为类 Foo\Bar\Demo\foo, // 以及类的方法 demo echo Demo\FOO.'
'; // 解析为常量 Foo\Bar\Demo\FOO /* 完全限定名称 */ \Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo \Foo\Bar\foo::demo(); // 解析为类 Foo\Bar\foo, 以及类的方法 demo echo \Foo\Bar\FOO.'
'; // 解析为常量 Foo\Bar\FOO ?>

在上述事例中,我们需要注意的是,访问任意全局类、函数或常量,都可以使用完全限定名称,例如 \strlen()\Exception 等。

别名、导入

PHP 允许通过别名引用或导入的方式来使用外部的命名空间,这是命名空间的一个重要特征。

在PHP中,通过use关键字和as配合可以实现命名空间的导入和设置别名。它的语法格式如下:

use 命名空间 as 别名;

示例如下:

其中需要注意的是,导入操作只影响非限定名称和限定名称。完全限定名称由于是确定的,故不受导入的影响。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 10.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号