php命名空间的设计思想和缺点

详细分析PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。 PHP 命名空间可以解决以下两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。 定义命名空间 默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。 命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明 立即下载

相比C#等语言,你可以在php函数里面随意定义变量并赋值,而不用担心覆盖了全局变量,或者类变量;你也可以随意的定义类变量,而不用担心会和函数名冲突,因为变量前面都有个$。

php的命名空间和全局变量、局部变量的设计思想一样,都是为了尽可能的减少命名冲突。php的命名空间可以和文件系统类似,有相对命名空间和绝对命名空间。

定义命名空间

必须是第一个语句,前面不能有任何语句,注释可以。
必须是绝对命名空间。

namespace bookrpg\config;

//或者

namespace bookrpg\config
{
}

namespace \bookrpg\config;  //错误,不能有前导\

导入命名空间

必须是绝对命名空间。

use bookrpg\config\ClassName;
use \bookrpg\config\ClassName; //可以有前导\,但不建议加
use bookrpg\config\ClassName as NewClassName;
use Exception;
use \Exception; //可以有前导\,但不建议加

使用命名空间

使用绝对命名空间

$cls = new \bookrpg\config\ClassName();

class MyException extends \Exception
{
}

使用相对命名空间

namespace bookrpg
{
    //等同于new \bookrpg\config\ClassName();
    $cls = new config\ClassName(); 

    //错误,php会认为是\bookrpg\Exception,而不是全局类Exception
    $ex = new Exception(); 
}

怪异的地方

C++、Java、C#都有相似的命名空间概念,而php的命名空间不跟随大流,有自己的一套独立的思想,对于先入为主的人来来说就显得怪异和令人迷惑。

  1. 命名空间中居然有反斜杠?
    点号(.)已经被用作字符串连接符了,又要区分绝对和相对命名空间,new .a.b.c()太不美观,所以选择反斜杠吧。

  2. 一旦使用了命名空间,使用全局类也要加上“\”或者use一下,累不累呀?
    没办法,为了严格类比文件系统的概念,也为了随便定义类名,而不用担心类名冲突。

  3. 既然是严格类比文件系统,为什么定义和导入命名空间的时候,前面不加\呢?
    只能说,php的设计者不是完美主义者。

但php的命名空间确实缺乏逻辑完美性:

  • 前导\的使用不统一,同样是绝对命名空间,定义的时候不允许用,导入的时候却允许用。
  • 即使是全局类,在非全局命名空间下,也必须使用前导\,而全局函数和变量又不受此限制。

使用建议

  • 定义和导入命名空间的时候,统一不加前导\
  • 所有的类都使用use导入,包括全局类,只命名空间类,有冲突的就as一下
  • 禁止直接使用相对命名空间

理解了php命名空间的设计思想,并避免其设计不完美的地方,这样看来php的命名空间也是很容易接受的。

别再让CPU干GPU的活了:CST Studio Suite GPU加速深度调优指南(从驱动版本到任务管理器监控) 本文深入探讨了CST Studio Suite的GPU加速深度调优方法,从NVIDIA驱动版本选择到系统级资源管理,再到实时监控与瓶颈诊断技术。通过科学的驱动优化、GPU资源管理策略和高级调优技巧,显著提升仿真效率,特别适合电磁仿真工程师和硬件加速需求的专业用户。 阅读详情

相关推荐

空间节省算法在Rowhammer防御中的应用与优化

空间节省算法(Space-Saving)是一种高效的流式数据处理算法,主要用于在有限内存条件下实时识别数据流中的高频项。其核心原理是通过维护固定大小的计数器表,动态跟踪最活跃的元素,适用于处理无限数据流场景。该算法在内存安全领域具有重要价值,特别是在Rowhammer攻击防御中,能够有效检测异常高频访问的DRAM行地址。通过结合计数器衰减策略(如DSAC)和混合架构设计,空间节省算法可以在保证低硬件开销的同时,提供高精度的攻击检测能力。这些技术已成功应用于现代DDR5内存控制器,展现出优异的工程实践价值。

weixin_31139479的博客 606

PHP 命名空间

食用指南(先看官网文档,再看入门视频,然后回看官网文档) 要求:(PHP 5 >= 5.3.0, PHP 7) 定义:命名空间是一种封装事物的方法; 如果代码使用了命名空间,那么所有代码必须写到命名空间

ManNiaoQinFen的博客 363

逆向实战:从x-mini签名到RPC调用,Frida动态分析小红书加密协议

本文通过实战案例,详细拆解了小红书App的加密协议逆向分析过程。从识别x-mini签名等关键参数入手,结合静态分析与Frida动态Hook技术,追踪到核心的RPC调用入口,并最终封装成可独立调用的RPC函数,为安全研究和协议理解提供了完整的技术路径。

moss5的博客 1032

php命名空间的理解

虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响, 它们是:类(包括抽象类和traits)、接口、函数和常量。 命名空间通过关键字namespace来声明。 如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间,除了一个以外:declare关键字。 一般情况下类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致; 但是有些...

qq_32421489的博客 196

2026开源API网关横评:微服务与AI流量治理如何选型

API网关作为微服务架构的流量入口,承担着路由转发、安全管控、限流熔断等核心职责,是分布式系统治理的基础设施。随着大模型应用的普及,AI流量对网关提出了新的要求,如流式响应支持、Token级限流、多模型路由和成本分账等能力。传统网关通过插件拼凑AI功能,而AI原生网关则将这些能力内建。面对众多开源方案,如何根据业务场景做出合理选型?本文对Kong、APISIX、Higress、Envoy Gateway、MAI Gateway等主流开源API网关进行横向评测,从性能、动态性、K8s集成度、AI流量治理等维度

weixin_34242819的博客 482

第4章 本地一键部署(新手首选)

本文介绍了OpenClaw的本地部署方法,特别适合新手用户。部署过程仅需执行一条命令,通过自动脚本完成安装和配置向导。安装完成后,用户可通过终端TUI或Web控制面板验证部署是否成功。文章还提供了常见问题的排查方法,包括端口占用、权限不足、APIKey无效和安装卡顿等情况。整个部署流程简单直观,无需手动修改配置文件,适合快速搭建使用。

eastyuxiao的专栏 194

PHP命名空间(Namespace)的使用详解

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决 详细出处参考: 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。 例:项目中有两个模块:article和mes

万里船的专栏 1499

uniapp - 获取设备麦克风权限+麦克风设备列表,用户可选择切换麦克风设备功能,选择麦克风采集设备后点击录制音频外部声音+可随时暂停/继续录音+记录音频录制时长(支持在线播放试听或下载MP3文件)

uniapp获取麦克风设备列表,uniapp录制声音,Uniapp获取麦克风权限,uniapp苹果ios安卓app获取麦克风设备列表,Uniapp H5获取浏览器麦克风并实现录音,Uniapp实现麦克风权限管理与音频录制全流程,uni-app实战案例:实现H5页面麦克风权限获取与录音功能,uni-app音频录制,uniapp麦克风授权窗口,uniapp获取iOS麦克风权限,实现前端录音并播放,把音频传给后端接口处理,获取麦克风并实现录音功能,前端获取/切换麦克风播放采集音频和采集音量大小,前端调用麦克风实现

🏆 前端领域优质创作者 2983

php命名空间与类传参有关系吗,php 命名空间详细介绍,看完就懂

PHP的命名空间(namespace)是php5.3之后才有的。这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。为什么php中要使用namespace?假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespace的时候...

weixin_29890919的博客 149

1、VMware vSphere 全面指南:从入门到精通

本文全面介绍了VMware vSphere从入门到精通的完整知识体系,涵盖基础概念、环境适配、部署规划、安装配置、网络与存储准备、虚拟机创建与管理、资源组织、事件监控、巡检流程、主机配置文件管理、资源池优化、高可用性与容错应用,以及故障排除方法。结合实用工具和部署技巧,帮助读者系统掌握vSphere的核心功能与运维实践,提升虚拟化环境的稳定性与管理效率。

pz890123的博客 95

2026 蓝牙技术趋势展望:信道探测、Auracast、高吞吐 HID 与 AI 融合引领行业变革

蓝牙技术2026年展望:信道探测、Auracast广播音频和AI融合将引领创新。蓝牙信道探测技术将实现亚米级精确定位,在工业资产追踪和汽车数字钥匙领域大显身手。Auracast广播音频将持续拓展公共场所应用,提升音频包容性体验。高数据吞吐量和超低延迟功能将支持AR/VR等新兴场景。AI与蓝牙的深度融合将推动可穿戴设备智能化发展,实现实时健康监测和个性化音频服务。蓝牙技术凭借其多功能性和创新力,正成为连接万物的关键技术,持续推动行业变革和生活品质提升。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 113

php 命名空间实现的原理,php命名空间实现的理解

[前言]之前测试命名空间,文件头部明明定义了namespace,并且类文件的存放位置与相对路径也一致,但use之后仍提示“找不到类”,为什么?[原理分析]1.根据use的值确定类文件的物理存储位置,然后通过require_one将类文件加载;2.类文件名称与类名称需要有一定的对应规则,方便autoload方法找到并加载类文件;3.类文件的namespace值需要与实际相应路径一致。4.常见错误:类...

weixin_42478292的博客 297

华为交换机系统软件升级和安全漏洞修复教程

在华为交换机国网可以查询到华为交换机官方电话:400-822-9999,通过下命令查询出需要升级的交换机软件版本和补丁版本号发给华为,获取新的升级系统软件和补丁以及升级教程。下面是我升级华为交换机总结的教程,作为参考。...

星如雨落 2965

PHP命名空间详解

今天这篇文章的篇幅有点长,小编在这里给大家整理了一下文章的框架,宝宝们可以根据自身的需要选择性的阅读,好啦,话不多说,让我们开始吧! 这篇文章的框架如下: 命名空间的定义 PHP 命名空间(namespace)是在PHP 5.3中加入的,对于学过C++的宝宝们,那命名空间就不算什么新事物了。 不过命名空间在PHP当中还是相当重要的。 PHP 命名空间可以解决以下两类问题: 1.用户编写的代码与...

qq_wxq的博客 4826

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

php命名空间

一、概述 1、场景: 我们在电脑上的文件夹中创建文件文件时,文件名称不能是重复的,否则将不能创建;这是为了保证我们的资源访问标识是唯一的,当我们通过资源访问路径访问我们的文件时能定位到是哪个文件;那么我们如果需要创建相同的文件名文件时,我们就需要先创建文件夹,然后将我们的文件放置其中,这里的文件夹作用就是命名空间的理解。 ​ 2、主要为解决以下问题 1、用户编写的代码与PHP源码或者第三方的源码(类、函数、常量)之间的名字冲突。 2、为了解决很长的标识符名称(一般由于第一个问题,定义的名称),提高代码的可读

sinat_35451964的博客 1368

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

PHP 函数、魔术常量和命名空间

文章目录PHP函数无参数函数有参数函数有返回值的函数魔术常量命名空间命名空间的定义子命名空间命名空间的使用命名空间和动态语言特征 PHP函数 PHP最最强大的地方在于函数,PHP内置1000+函数。 语法格式: function functionName(){ 将要执行的代码; } 函数命名准则: 函数名应该代表其功能 函数名应该以字母或下划线开头 无参数函数 <html> &...

喵喵喵 830

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PHP-PHP自动加载和命名空间原理解析

概念 》什么是autoload? 自动加载的原理,就是在我们实例化一个 class 的时候,PHP如果找不到这个类,就会去自动调用本文件中的 __autoload($class_name) 方法,我们new的这个class_name 就成为这个方法的参数。所以我们就可以在这个方法中根据我们需要new class_name的各种判断和划分就去require对应的路径类文件,从而实现自动加载。 》什么是namespace? 在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到

csdn_yasin的博客 2229

浅析PHP的命名空间与PHP命名空间的动态特性

使用namespace// 在同一文件中定义第一个名称空间 // code namespace test2;// 在同一文件中定义第二个名称空间 // code?如上我们定义名称空间,并且在该文件中的下一个名称空间声明之前所有内容都属于该名称空间,同时,我们可以在同一文件中声明多个名称空间// 在同一文件中定义第一个名称空间 // code } namespace test2 {// 在同一文件中定义第二个名称空间 // code }?注意:多个命名空间建立时语法应一致,只能使用大括号或。

m0_74220316的博客 475

PHP 命名空间及自动加载

文章目录1、命名空间基本概念命名空间解决什么问题什么是命名空间?2、一个简单的命名空间实例3、定义命名空间定义子命名空间同一文件中定义多个命名空间命名空间和全局命名空间代码的结合4、使用命名空间限定规则5、导入或使用别名use操作符使用别名6、全局空间7、命名空间中的解析策略8、自动加载 1、命名空间基本概念 命名空间解决什么问题 PHP项目开发过程中常常会引入许多第三方类库,我们所编写的代码可...

qq_24142779的博客 557

PHP命名空间

简介 为了避免代码中自定义的类、函数、常量等标识符,与PHP内置或第三方库中的已有标识符重名导致冲突,PHP从5.3版本开始支持命名空间,旨在给原本同名的标识符加上命名空间前缀,从而在代码中区分它们。 命名空间实际上是解决上述问题的一种思想和方案,许多高级语言都提供了不同形式的支持。接下来,本文从简入手,介绍PHP命名空间的基础。 定义命名空间 定义命名空间的最简单形式,是在PHP代码开头,通过namespace关键字声明,指定该文件中自定义的类、函数、常量标识符均属于声明的命名空间之下。例如.

Germanknight的专栏 407

php 单例模式缺点_php中单例模式优缺点是什么

php中单例模式优缺点是什么发布时间:2020-12-25 14:53:45来源:亿速云阅读:67作者:Leah这期内容当中小编将会给大家带来有关php中单例模式优缺点是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。【概要】保证一个类仅有一个实例,并且提供一个访问它的全局访问点【GOF95】【特点】1、一个类只有一个实例2、它必须自行创建这个实例3、必须自行...

weixin_42298068的博客 329

php定义根命名空间,PHP命名空间namespace的定义方法详解

PHP(PHP: Hypertext Preprocessor的缩写,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。今天我们继续来讲PHP方面的知识。本文实例讲述了PHP命名空间namespace的定义方法。分享给大家供大家参考,具体如下:定义命名空间对于空间的...

weixin_42510148的博客 417

php的命名空间

问:命名空间是什么?它有什么用? 答:命名空间是一种带有限制性描述的关键词,能说明代码是“混”哪片的。他是在5.3版本中才加入的,这个版本号可以说是个分界点,也就是因为命名空间的存在,很多的开源的代码在安装的时候都会限制php代码大于等于5.3,由此可见命名空间的重要性。它类比到生活中就是“地址”,也可以说是你学籍卡上的地址信息,比如XX学校XX年级XX级部XX班。至于它的作用呢,更多的是...

u012274988的博客 279

php的命名空间和PDO

#一、 静态延时 # 语法: static::静态属性,静态方法,成员方法,类常量 它是代表最终执行的类,就像self::一样,只不过self::是代表当前类 #二、 命名空间 # 命名空间语句: namespace 目录名\目录名; 使用目录名中的类或者方法 路径\类名(或方法) 也可以在声明了第一个命名空间之后声明的而过命名空间,这以下的将会自动转到第二个命名空间里面去 命名空间是一种...

qq_44981657的博客 503

php中命名空间重要吗,关于php:PHP中命名空间是怎样的存在一

命名空间其实早在PHP5.3就曾经呈现了。不过大部分同学可能在各种框架的应用中才会接触到命名空间的内容,当然,现代化的开发也都离不开这些可能疾速产出的框架。这次咱们不从框架的角度,仅从简略的代码角度来解析一下命名空间的概念和应用。首先,咱们要定义命名空间是个什么货色。其实就像操作系统的目录一样,命名空间就是为了解决相似于操作系统中同一个文件夹不能有雷同的文件名一样的问题。假如咱们只有一个文件,一个...

weixin_29038303的博客 164
上一篇: php7 vs java8 vs nodejs5 vs lua5.2 计算性能比较
下一篇: 对escape的理解
llj1985
博客等级 码龄20年 13粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值