Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP的命名空间

PHP的命名空间

作者头像
老雷PHP全栈开发
发布于 2020-07-02 04:35:36
发布于 2020-07-02 04:35:36
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:

1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,

它们是:类(包括抽象类和traits)、接口、函数和常量。

定义命名空间

命名空间通过关键字namespace来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 namespace MyProject;
 namespace MyProject\Sub\Level;
 funtion a(){};

使用命名空间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <?php
 namespace MyProject;
 function b(){};
 ?>
 <?php
 namespace MyProject\Sub\Level;
 function a(){}
 ?>
 <?php
 namespace MyProject;
 //非限定名称 同一个命名空间
 b();
 //限定空间 继承当前的命名空间
 Sub\Level\a();
 //使用完全限定名称 独立的命名空间
 \MyProject\Sub\Level\a();
 \strlen();
 ?>

别名和导入

别名和导入是通过操作符 use 来实现的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 use My\Full\Classname as Another; 
 // 下面的例子与 use My\Full\NSname as NSname 相同
 use My\Full\NSname;
 // 导入一个全局类
 use ArrayObject;
 // importing a function (PHP 5.6+)
 use function My\Full\functionName; 
 // aliasing a function (PHP 5.6+)
 use function My\Full\functionName as func; 
 // importing a constant (PHP 5.6+)
 use const My\Full\CONSTANT;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老雷PHP全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP命名空间学习笔记
从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。
大江小浪
2019/02/22
1.8K0
php命名空间详解
1、命名空间概述 从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用
苦咖啡
2018/05/07
2.7K0
php代码抄写笔记
php变量类型松散,定义时变量一个类型,在之后可以赋予另一种类型的参数。 三种作用域:local、global、static global关键字用在函数内变量前表示声明以后使用的变量为全局变量。 static关键字用在函数内变量前表示该变量在函数执行完成后不销毁,且static关键字定义的变量赋予的仅是初始值,再次执行函数,不会执行定义中的赋值操作。
木尤
2020/07/14
4.2K0
PHP 5.3以上版本新增的一些方法
__FILE__用来指向当前执行的PHP脚本 $dir = dirname(__FILE__);
用户7657330
2020/08/14
6370
PHP学习笔记(二)——行云博客
PS:print_r() 函数用于打印变量,以更容易理解的形式展示。如果给出的是 string、integer 或 float 类型变量,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
行云博客
2020/07/13
3.8K0
PHP中命名空间是怎样的存在?(二)
今天带来的依然是命名空间相关的内容,本身命名空间就是PHP中非常重要的一个特性。所以关于它的各种操作和使用还是非常复杂的,光使用方式就有很多种,我们一个一个的来看。
硬核项目经理
2020/04/08
9850
PHP-命名空间
在一个大的项目中,可能会遇到同名的类、函数、常量,为了区分这些元素,我们可以将这些元素分别存放到不同的命名空间中。
cwl_java
2022/11/30
1.8K0
PHP命名空间(Namespace)初探
命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。
OwenZhang
2021/12/08
1.9K0
PHP中命名空间是怎样的存在?(三)
这是与命名空间有关的最后一篇。最后还是两个比较简单的内容,是关于命名空间和全局相关的一些类、函数、常量的使用对比。当然,最后我们还会总结一下命名空间的名称解析规则做为这三篇系列文章的结束。
硬核项目经理
2020/04/08
1.1K0
PHP 命名空间元素访问及use的使用
使用 as 时空间元素名称则被新名称取代, 原名称不能用了, 故不能称之为起别名, 应该是起新名
很酷的站长
2023/01/05
1.4K0
PHP 命名空间元素访问及use的使用
萌新必备技能--PHP框架反序列化入门教程
本文面向拥有一定PHP基础的萌新选手,从反序列化的简略原理->实战分析经典tp5.0.x的漏洞->讨论下CTF做题技巧,
猿哥
2020/02/26
7640
PHP命名空间
本文是复习所写,并不会涵盖一些基础知识点 定义 命名空间就相当于操作系统中目录的概念 主要是为了解决以下两个问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突 为很
码一
2022/06/06
2.8K0
PHP命名空间
路由&模块化设计&命名空间
ThinkPHP采用模块化的架构思想,可以支持多模块应用的创建,让应用的扩展更加方便. 先简单说下路由规则:
仇诺伊
2018/09/12
8640
路由&模块化设计&命名空间
秒懂php的命名空间
“什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。”(来自php官网)
碧海长天
2021/10/21
1.6K0
深入解析C++命名空间:从基础到高级应用
在C++发展的早期阶段(C++98之前),开发者面临着一个日益严重的问题:随着项目规模的扩大和第三方库的广泛使用,名称冲突(Name Collision)变得越来越普遍。当两个不同的库定义了相同名称的函数、类或变量时,编译器将无法正确识别开发者实际想要使用的实体。
用户11456817
2025/02/14
1040
深入解析C++命名空间:从基础到高级应用
利用 PHP 名称空间编写可读且可维护的代码
“Conan 是我榜样。” 如果我在餐桌上说这句话,我儿子会以为我说的是游戏 “野蛮人柯南”,而我妻子会以为我说的是脱口秀主持人 Conan O'Brien。这种上下文混淆在 IT 中称为名称冲突。许多语言都有防止名称冲突的战略,PHP V5.3 也是这样。PHP 使用新的名称空间特性解决名称冲突问题。当然,PHP 要解决的冲突的名称并不是人名,而是类、函数和常量的名称。
后端技术探索
2018/08/09
1.1K0
php面向对象16篇 命名空间的概述
核心概念:核心慨念都是自定义一个存储空间。避免类名重复系统无法判断该执行哪一个类或是哪一个函数。 问题? 自定义一个存储空间? 存储数据的空间. 问题? 类名重复系统无法判断该执行哪一个类或
贵哥的编程之路
2020/10/28
3450
PHP面向对象-命名空间的嵌套和别名
命名空间可以嵌套定义,这意味着一个命名空间可以包含另一个命名空间。使用嵌套命名空间时,我们可以使用反斜杠“\”来表示命名空间的层级结构。
堕落飞鸟
2023/04/28
1.3K0
相关推荐
PHP命名空间学习笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验