在php命名空间中,需要知道关于空间三种名称的术语:非限定名称、限定名称、完全限定名称,以及PHP是怎样解析它们的。官方文档说得非常好,就直接拿来套了,了解它们对学习后面的内容很有帮助。前面了解到命名空间的子空间和公共空间,命名空间的调用语法像文件路径一样是有道理的,它允许我们自定义子空间来描述各个空间之间的关系。

命名空间中的三个名称的术语如下所示:

1.非限定名称,或不包含前缀的类名称,例如 $comment = new Comment();。如果当前命名空间是Blog\Article,Comment将被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

2.限定名称,或包含前缀的名称,例如 $comment = new Article\Comment();。如果当前的命名空间是Blog,则Comment会被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

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

其实可以把这三种名称类比为文件名(例如 comment.php)、相对路径名(例如 ./article/comment.php)、绝对路径名(例如 /blog/article/comment.php),这样可能会更容易理解。

在这里创建一个Blog 空间,使用非限定名称,表示当前Blog空间,实例化以后这个调用将被解析。使用限定名称,表示相对于Blog空间,实例化以后这个调用将被解析成 Blog\Article\Comment(),注意类前面没有反斜线。使用完全限定名称,表示绝对于Blog空间,实例化以后这个调用将被解析,注意类前面有反斜线和没有反斜线区别。

其示例代码如下所示:<?php

//创建空间Blog

namespace Blog;

class Comment { }

//非限定名称,表示当前Blog空间

//这个调用将被解析成 Blog\Comment();

$blog_comment = new Comment();

//限定名称,表示相对于Blog空间

//这个调用将被解析成 Blog\Article\Comment();

$article_comment = new Article\Comment(); //类前面没有反斜杆\

//完全限定名称,表示绝对于Blog空间

//这个调用将被解析成 Blog\Comment();

$article_comment = new \Blog\Comment(); //类前面有反斜杆\

//完全限定名称,表示绝对于Blog空间

//这个调用将被解析成 Blog\Article\Comment();

$article_comment = new \Blog\Article\Comment(); //类前面有反斜杆\

//创建Blog的子空间Article

namespace Blog\Article;

class Comment { }

?>

其实之前介绍的一直在使用非限定名称和完全限定名称,现在它们终于有名称了。

命名空间中的三个名称和术语先了解到这里,下一章节将会带朋友们了解命名空间中的别名和导入。

【相关教程推荐】

php限定名称写法,php命名空间:非限定名称、限定名称、完全限定名称实例详解...相关推荐

  1. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

  2. python中嵌套函数的应用实例-实例详解python函数的对象、函数嵌套、名称空间和作用域...

    函数的对象 python中一切皆对象 函数对象的四大功能 引用 def f1(): print("from f1") f1() #调用函数 print(f1) print(&quo ...

  3. python类的命名空间_Python之关于类变量的两种赋值区别详解

    我就废话不多说了,还是直接看代码吧! # -*- coding:utf-8 -*- #面试题,写一个方法,将一行字符串中所有的单词数量统计出来 class Person(object): TAG = ...

  4. Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种...

    2019独角兽企业重金招聘Python工程师标准>>> 今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵 ...

  5. php 非数字和字母,如何通过非数字与字符的方式实现PHP WebShell详解

    前言 本文主要给大家介绍的是关于通过非数字与字符实现PHP WebShell的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍: 一般来说,我们所写的webshell通常都会包含数字或字母. ...

  6. abaqus结构工程分析及实例详解pdf_“结构非线性、材料拟合、冲击碰撞、钣金/金属成形、顺序耦合、多物理场、有/非参优化”专题...

    课程背景 结构的刚强度.材料参数标定.制造可行性.顺序耦合和多物理场耦合,及其性能优化等,是工程领域的产品设计必须考虑的仿真因素.为了让广大仿真分析人员,更好地掌握结构设计与优化的技术能力,全面理解A ...

  7. IO复用模型同步,异步,阻塞,非阻塞及实例详解

    IO模型介绍 常用的5种IO模型:blocking IOnonblocking IOIO multiplexingsignal driven IOasynchronous IO 再说一下IO发生时涉及 ...

  8. [4G5G专题-13]:功能 LTE非授权频谱辅助接入技术(LAA )详解

    目录 第1章 LTE授权频谱辅助接入LAA概述 1.1 什么是授权频谱与非授权频谱? 1.2 LAA概述 1.3 为什么需要LAA 1.4 LAA的频谱 1.5 在5GHz非授权频谱上,ETSI与FC ...

  9. sql server修改索引名称_【索引潜规则】覆盖索引、ICP、MRR详解

    点击上方蓝色字体,关注我们 上篇文章我们说了创建索引的方法,有聚簇索引.辅助索引.前缀索引.联合索引等,也说了如何利用索引的排序功能,接着本篇文章主要来说一说索引的几种优化策略,首先我们先说下回表的概 ...

最新文章

  1. javascript知识点
  2. 利用CMake编译内核模块
  3. 【Android 高性能音频】Oboe 开发流程 ( 包含头 Oboe 头文件 | 创建音频流 | 设置音频流 | 音频流回调类 AudioStreamCallback )
  4. 厚积薄发,看腾讯云如何快速从IPv4向IPv6演进?
  5. ES6:Reflect
  6. 没想到MySQL还会问这些...
  7. 多进程 VS 多线程
  8. LeetCode 293. 翻转游戏
  9. linux中cv调用摄像头,ubuntu中opencv调用摄像头
  10. 每个计算机系的学生都学离散数学,离散数学一阶逻辑精要.ppt
  11. 七步从Angular.JS菜鸟到专家(1):如何开始
  12. jquery日期时间控件
  13. 跳槽,成为程序员晋升与成长的唯一手段?
  14. Go 编码建议——性能篇
  15. mysql时间设计模式_java 23种设计模式及具体例子 收藏有时间慢慢看
  16. A non well formed numeric value encountered
  17. 【SDOI2015】临行前的夜
  18. Poco Timer
  19. 视频帧凸包检测 结果存入数据库
  20. 重新思考人和计算机的关系

热门文章

  1. 【OpenCV 4开发详解】轮廓面积与长度
  2. 2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进
  3. 查询表中的所有字段名
  4. C# 窗体位置 Show和ShowDialog (转载)
  5. NFS安装系统及PS1设定
  6. linux运维 对比 网络_linux运维、架构之路-网络基础
  7. python格式化文本_Python格式化大文本
  8. 代码如何获取单反相机拍摄的照片_看看如何拍摄出更好的照片
  9. 映射date类型_JPA 日历映射到日期示例
  10. 如何管理多个 SSH 连接