了解命名空间

深入了解 Android 中的命名空间:`xmlns:tools` 和其他常见命名空间 在 Android 开发中,`xmlns` 命名空间是一个非常重要的概念。通过引入不同的命名空间,可以使用不同的属性来设计布局、设置工具属性或者支持自定义视图等。除了 `xmlns:tools` 以外,还有很多常见的命名空间可以在布局文件中使用。本文将介绍几个常见的命名空间及其用途,并详细探讨它们的使用场景。 阅读详情

命名空间的作用

解决文件中引用另一个文件时存在相同类名,函数名以及常量名的问题,比如test.php文件如下

这里写图片描述

然后在test1.php中加载这个文件

这里写图片描述

如果两者的命名空间相同,包括两者都没有设置命名空间的情况下,执行test1.php会报冲突,因为两个文件有相同的类Test,这是不被允许的,然而命名空间可以很好的解决这个问题,如果将test1.php的命名空间进行修改,如下:

这里写图片描述

现在两个文件的类Test在不同的命名空间下,因此不会发生冲突,不过具体要实例化哪个类,且看下文分析

use的作用

use只是用来使命名空间引用时更简洁,比如我们想使用类app\first\Test,那么我们只需要在开头加

use app\first\Testh 或者 use app\first\Test as Test

以后就不用麻烦的写全命名空间,直接new Test,就制定了app\first这个命名空间,总结的说use就是一个设置别名的作用

这里写图片描述

上图实例化的就是app\first下的Test类,
这里需要注意的是,use的别名不能等于当前文件中的类名!!

命名空间类名

php的命名空间类名总有三种方式

  1. 非限定名称,或不包含前缀的类名称,例如 $a=new foo(); 或 foo::staticmethod(),foo 将被解析为 currentnamespace\foo

  2. 限定名称,或包含前缀的名称,例如 $a = new subnamespace\foo(),如果当前的命名空间是 currentnamespace,则 foo 被解析为currentnamespace\subnamespace\foo

  3. 完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo。

    下面从官网找来一张图,详细的介绍了类名的引用

<?php
namespace A;
use B\D, C\E as F;

// 函数调用

foo();      // 首先尝试调用定义在命名空间"A"中的函数foo()
            // 再尝试调用全局函数 "foo"

\foo();     // 调用全局空间函数 "foo" 

my\foo();   // 调用定义在命名空间"A\my"中函数 "foo" 

F();        // 首先尝试调用定义在命名空间"A"中的函数 "F" 
            // 再尝试调用全局函数 "F"

// 类引用

new B();    // 创建命名空间 "A" 中定义的类 "B" 的一个对象
            // 如果未找到,则尝试自动装载类 "A\B"

new D();    // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象
            // 如果未找到,则尝试自动装载类 "B\D"

new F();    // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象
            // 如果未找到,则尝试自动装载类 "C\E"

new \B();   // 创建定义在全局空间中的类 "B" 的一个对象
            // 如果未发现,则尝试自动装载类 "B"

new \D();   // 创建定义在全局空间中的类 "D" 的一个对象
            // 如果未发现,则尝试自动装载类 "D"

new \F();   // 创建定义在全局空间中的类 "F" 的一个对象
            // 如果未发现,则尝试自动装载类 "F"

// 调用另一个命名空间中的静态方法或命名空间函数

B\foo();    // 调用命名空间 "A\B" 中函数 "foo"

B::foo();   // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法
            // 如果未找到类 "A\B" ,则尝试自动装载类 "A\B"

D::foo();   // 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法
            // 如果类 "B\D" 未找到,则尝试自动装载类 "B\D"

\B\foo();   // 调用命名空间 "B" 中的函数 "foo" 

\B::foo();  // 调用全局空间中的类 "B" 的 "foo" 方法
            // 如果类 "B" 未找到,则尝试自动装载类 "B"

// 当前命名空间中的静态方法或函数

A\B::foo();   // 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "A\A\B" 未找到,则尝试自动装载类 "A\A\B"

\A\B::foo();  // 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "A\B" 未找到,则尝试自动装载类 "A\B"
?>

总结

命名空间应用非常广泛,想要了解命名空间的运行原理还要去了解自动加载。这里就不说了

如有不准确的地方欢迎指正
告别数据丢失焦虑:用Python手把手实现Reed-Solomon码(附完整代码) 本文详细介绍了如何使用Python实现Reed-Solomon纠错码(RS码),帮助开发者有效防止数据丢失。通过基础编解码实战、文件保护方案和高级性能优化技巧,读者可以轻松掌握这一前向纠错技术,应用于物联网、文件存储和网络传输等场景,提升数据可靠性。 阅读详情

相关推荐

从‘查理复用’到TM52F1363:深入剖析5脚188数码管的驱动原理与避坑指南

本文深入解析了5脚188数码管的驱动原理,重点介绍了查理复用技术如何通过5个IO引脚高效驱动188段显示,并详细探讨了TM52F1363单片机的寄存器配置与驱动实现。文章还提供了常见问题的解决方案和性能优化技巧,帮助开发者避免实际应用中的各种陷阱。

weixin_29159441的博客 481

命名空间详解

命名空间

2301_79686315的博客 547

Unity3d实现红外热成像效果

1.将需要在红外图像中高亮的物体设置到图层PostProcessing。 2.新建一个相机CameraHighLight,设置其Culling Mask为PostProcessing,也就是在这个相机中只有PostProcessing图层的物体可见。 3.新建一个RenderTexture,命名为HightLightRt,将CameraHighLight的Target Texture设HightLightRt。 4.新建一个相机Camera2,这个相机用于显示其他物体。 接下来将CameraHigh

zouxin_88的专栏 8328

详解命名空间

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。// aaa是命名空间的名字,一般开发中是用项目名字做命名空间名。// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

m0_73824825的博客 690

企业信息化系统的组成模块-核心业务系统

通过标准化的数据流形成完整的业务闭环,CRM生成的销售订单驱动ERP的生产和采购,ERP将生产计划传递给MES执行,MES报工数据返回ERP进行成本核算,ERP再将交付信息同步给CRM供客户查询。生产管理确保高效交付,缩短订单周期。某贸易公司实施ERP供应链模块后,库存周转率从每年4次提升到8次,库存资金占用从2000万降到1200万,释放800万现金流,同时缺货率从15%降到5%。│ │库存 │ │ MRP │ │ ERP │ │ 云ERP/ │ │。

weiyvyy的博客 697

playwright-mcp 安装使用的详细教程

Playwright MCP 快速入门指南 Playwright MCP Server 是由微软开发的浏览器自动化服务,通过 MCP 协议为 AI/Agent/LLM 提供网页交互能力。它基于可访问性树而非屏幕截图,支持多种浏览器和运行模式。 安装要求: Node.js v18+ 命令行操作能力 支持 MCP 的客户端 安装方式: 通过 npx 快速启动:npx @playwright/mcp@latest 项目依赖安装:npm install @playwright/mcp 主要特性: 支持 Chrome

上善若水 8006

C++·初步认识(命名空间)

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间可定义变量、函数、类型命名空间可以嵌套//变量//函数//类型int val;//嵌套int b = 0;int val;

czy02的博客 205

深入浅出:CosineLRScheduler 调度器的原理与实战应用

本文深入解析了CosineLRScheduler调度器的核心原理与实战应用,详细介绍了余弦退火算法及其在深度学习模型训练中的优势。通过参数配置建议、PyTorch实现示例和常见问题解决方案,帮助开发者高效应用该调度器提升模型性能,特别适用于计算机视觉和自然语言处理任务。

sss66的博客 859

C++的命名空间(namespace)

c++学习,对于有c语言基础的,开始学习C++的初学者,这节学习和c语言不同的命名空间

weixin_42838749的博客 1746

使用Matlab进行IEEE 33节点潮流计算的NR法实现详解及应用实例

IEEE 33节点系统是一个标准的配电系统模型,广泛用于学术研究和工程应用。该系统由33个节点和37条线路组成,结构复杂,具有代表性。其潮流计算结果可用于验证各种潮流计算方法的准确性和效率。NR法是一种基于迭代求解的潮流计算方法,通过不断迭代求解非线性方程组,直到达到预定的收敛条件。NR法具有收敛速度快、计算精度高的优点,适用于大规模复杂电力系统的潮流计算。

m0_57781768的博客 2071

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 870

命名空间

一个项目往往是许多人协作完成的,如果A定义了a 这个变量,而B也定义了a这个变量那么就会发生命名冲突。命名空间大家都知道是用来解决命名冲突问题的。 1下面我们就以标准输入输出为例;先来介绍一下标准输入输出, 1),iostream库包含两个基础类型istream和ostream ,分别表示输入流和输出流 流;;随时间的推移,字符顺序生成或消耗的 2)标准输入输出对象...

a15929748502的博客 1553

实战复盘:纷玩岛(Livelab)候补订单微信支付协议的逆向与复现

通过本次对纷玩岛候补支付接口的分析,我们实现了一个脱离 App UI 的轻量级支付发起器。这不仅验证了其API的设计逻辑(Standby -> PrePayInfo 分层设计),也为后续的自动化监控或辅助抢票工具提供了支付环节的技术验证。技术本无罪,关键在于如何使用。理解这些底层协议,有助于我们写出更健壮的代码,也能在遇到线上支付问题时快速定位是业务层(API)问题还是通道层(微信)问题。

猫敷雪 803

了解 XML 命名空间

从语法和理论上了解什么是命名空间、如何定义命名空间以及如何使用它们。点击此处阅读全文

1076

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

XML---命名空间,了解Schema约束的前提

在了解另一种xml文件约束前,先从命名空间的理解入手

DSXIA的博客 919

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【C++】你了解命名空间吗?

C++ 命名空间

awww224112的博客 1929

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【C++指南】了解C++命名空间

对C++前身的介绍及namespace的定义和使用

egoist2023的博客 3451

xml-了解 XML 命名空间

了解 XML 命名空间发布日期: 4/14/2004 | 更新日期: 4/14/2004Aaron SkonnardDevelopMentor更新日期:2002 年 7 月本页内容什么是命名空间? 编程语言中的命名空间 XML 中的命名空间 对命名空间进行命名 定义命名空间 使用命名空间

2118

【C++】详细了解namespace命名空间

目录键盘敲烂,月薪过万,同学们,加油呀! 一、命名空间的理解二、::作用域运算符三、命名空间(namespace)3.1、namespace的由来3.2、命名空间使用语法3.3、using声明3.4、using编译指令 同学们好!今天王老师来带大家了解C++中的命名空间(namespace)的一个概念。首先要了解什么是命名空间,这个大家就可以把它理解成一个工具箱,如下图:众所周知,我们C++一般用在大型项目中,现在假设我们一共有张三,李四,王五三个人完成一个大型项目, 因为项目太大了,所以我们在创建变量的

wbyyd1314的博客 1359

三分钟带你快速了解命名空间

菜鸟教程

M2642347713的博客 1715

XML 模式:了解命名空间

XML 模式:了解命名空间 作者:Rahul Srivastava 迁移到 XML 模式?此命名空间介绍将帮助您了解其比较重要的组件之一。 根据Namespaces in XML W3C 推荐标准的定义,XML命名空间是由国际化资源标识符 (IRI) 标识的 XML 元素和属性集合;该集合通常称作 XML“词汇”。 定义 XML 命名空间的主要动机之一是在使用和重用多个词汇时避免名称冲突。XML 模式用于为 XML 实例创建一个词汇并频繁使用命名空间。因...

舞鹤白沙编码日志 401

C++——命名空间,你了解多少?

1、命名空间 在C/C++中,变量、函数和类的名称都将存在于全局作用域中,可能会导致很多冲突。namespace关键字的出现就是针对这种问题的。 使用命名空间的目的:对标识符的名称进行本地化,以避免命名冲突或名字污染 2、命名空间定义 定义命名空间需要用到namespace关键字,后面会跟命名空间的名字,然后接一对{},{}中的内容就是命名空间的成员 (1)普通的命名空间 既可以定义变量,也可以定义函数 namespace N1 //N1为命名空间的名称 { //命名空间中的内容,既可

m0_46657980的博客 289

【C++掌中宝】从std的角度来进一步了解命名空间

本文从标准库的命名空间std的角度来进一步解析命名空间的有关内容

2301_80191662的博客 2847

命名空间的了解

为了兼容C++老版本,C定义了两套头文件.h(老得)和不包含.h(命名空间为std)的库,(namespace 名字{}定义的作用域 使用的时候写在头作用域为整个文件,写在函数里面作用域为函数的作用域) 转载于:https://blog.51cto.com/ouyaliang/1328012...

weixin_34148508的博客 69

初步了解C++命名空间

// namespace A{ class One{ public: int fun(); }; } namespace B{ class Two{ public: int fun(); }; } class Three{ public: int fun1(); void fun2(); };

工作时间 482

PHP 快速了解命名空间

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字 命名空间将代码划分出不同的空间(区域),每个空间的常量、函数、类(为了偷懒,我下边都将它们称为元素)的名字互不影响 一、基础 1)命名空间的定义 namespace Article; #当前脚本文件的第一个命名空间前面不能有任何代码 2)同一脚本文件中可以创建多个命名空间 //创建一个名为'Article'的命名空间 namespace Article; //此Comment属于Article空间的元.

潘广宇的博客 146
上一篇: Git常用命令总结
下一篇: php访问控制
jj_jameholl
博客等级 码龄10年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值