网站首页 > 技术教程 正文
1、命名空间概述
从广义上来说,命名空间是一种封装事物的方法。
2、好处
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性
3、影响范围
- 类(包括抽象类和traits)、接口、函数和常量
4、解析规则
4.1、命名空间名称定义
- 非限定名称Unqualified name
名称中不包含命名空间分隔符的标识符,例如 Foo
- 限定名称Qualified name
名称中含有命名空间分隔符的标识符,例如 Foo\Bar
- 完全限定名称Fully qualified name
名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如 \Foo\Bar。 namespace\Foo 也是一个完全限定名称。
4.2、名称解析遵循下列规则
- 对完全限定名称的函数,类和常量的调用在编译时解析。例如 new \A\B 解析为类 A\B。
- 所有的非限定名称和限定名称(非完全限定名称)根据当前的导入规则在编译时进行转换。例如,如果命名空间 A\B\C 被导入为 C,那么对 C\D\e() 的调用就会被转换为 A\B\C\D\e()。
- 在命名空间内部,所有的没有根据导入规则转换的限定名称均会在其前面加上当前的命名空间名称。例如,在命名空间 A\B 内部调用 C\D\e(),则 C\D\e() 会被转换为 A\B\C\D\e() 。
- 非限定类名根据当前的导入规则在编译时转换(用全名代替短的导入名称)。例如,如果命名空间 A\B\C 导入为C,则 new C() 被转换为 new A\B\C() 。
- 在命名空间内部(例如A\B),对非限定名称的函数调用是在运行时解析的。例如对函数 foo() 的调用是这样解析的:
- 在当前命名空间中查找名为 A\B\foo() 的函数
- 尝试查找并调用 全局(global) 空间中的函数 foo()。
- 在命名空间(例如A\B)内部对非限定名称或限定名称类(非完全限定名称)的调用是在运行时解析的。下面是调用 new C() 及 new D\E() 的解析过程: new C()的解析:
- 在当前命名空间中查找A\B\C类。
- 尝试自动装载类A\B\C。
new D\E()的解析:
- 在类名称前面加上当前命名空间名称变成:A\B\D\E,然后查找该类。
- 尝试自动装载类 A\B\D\E。
为了引用全局命名空间中的全局类,必须使用完全限定名称 new \C()。
5、具体操作
- 使用spl_autoload_register函数设置一个加载器
- 使用关键字use 引入类到执行文件中
猜你喜欢
- 2024-10-21 常见面试问题之-设计模式 重要包含PHP代码实现额,PHP开发者必看
- 2024-10-21 php生命周期介绍(php的生命周期, 启动流程, 多看tipi)
- 2024-10-21 Laravel框架命名空间的定义(laravel框架关键技术解析)
- 2024-10-21 网站建站流程-空间购买(网站空间商选择考虑三大因素)
- 2024-10-21 准确JavaScript世界观:复杂值vs原始值&&内存空间(1)
- 2024-10-21 如何搭建个人博客网站?角点科技教你搭建博客网站
- 2024-10-21 建设属于自己的网站需要什么(建设属于自己的网站需要什么资质)
- 2024-10-21 省钱了!使用极空间搭建一个免费的MariaDB数据库并实现远程访问
- 2024-10-21 Windows+Apache+MySQL+PHP4 官方推荐详细安装步骤
- 2024-10-21 PHP内存管理机制与垃圾回收机制(php 内存模型)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)