加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP命名空间入门教程  PHP5.3当中就引入了“命名空间”的概念,一直都没怎么关注和使用,其实学习它也挺简单的,看官方的教程就行了:   命名空间概述   定义命名空间   定义子命名空间

发布时间:2022-09-28 15:52:52 所属栏目:PHP教程 来源:
导读:  PHP5.3当中就引入了“命名空间”的概念,一直都没怎么关注和使用,其实学习它也挺简单的,看官方的教程就行了:

  命名空间概述

  定义命名空间

  定义子命名空间

  在同一个
  PHP5.3当中就引入了“命名空间”的概念,一直都没怎么关注和使用,其实学习它也挺简单的,看官方的教程就行了:
 
  命名空间概述
 
  定义命名空间
 
  定义子命名空间
 
  在同一个文件中定义多个命名空间
 
  使用命名空间:基础
 
  命名空间和动态语言特征
 
  namespace关键字和__NAMESPACE__常量
 
  使用命名空间:别名/导入
 
  注意:PHP 命名空间目前仅支持 类名称 和 命名空间 的导入,暂不支持导入函数或常量!
 
  全局空间
 
  使用命名空间:后备全局函数/常量
 
  名称解析规则
 
  学习、实践笔记:
 
  1、定义命名空间时,命名空间开头不能有反转义符“\”,即namespace \A\B\C; 是错误的,此命名空间将不起作用!namespace A\B\C;才是对的。
 
  2、导入命名空间时PHP命名空间,如果命名空间是一级的,则开头一定要加反转义符“\”,即 use A; 是错误的,use \A;才是对的。
 
  3、导入命名空间时,如果命名空间是二级或更多级的,则开头有没有加反转义符“\”效果都是一样,即都表示 完全限定名称,如 use A\B\C; 跟 use \A\B\C; 是等效的。(如果是多级的,建议开头不加“\”)
 
  4、对于“非限定名称函数/常量”,如果当前命名空间有,则调用当前命名空间下的该函数/常量,否则,继续到全局命名空间下去找,有,则调用,没有,则报错!
 
  5、对于“非限定名称类”,如果 当前命名看空间 有,则调用当前命名空间下的该类,没有,则调用__autoload函数,还没有的话,就直接报错!即不会继续到 全局命名空间 下去找了!
 
  6、对于“限定名称函数/常量”,如果当前命名看空间有,则调用当前命名空间下的该 限定名称函数/常量,没有,则直接报错!即不会继续到全局命名空间下去找了!
 
  7、对于“限定名称类”,如果当前命名看空间有,则调用当前命名空间下的该 限定名称类,没有,则调用__autoload函数,还没有的话,就直接报错!即不会继续到全局命名空间下去找了!
 
  8、上面说的常量指的是通过关键字const定义的常量,而函数define()定义的常量是不受命名空间影响的,即在任何地方都可用,具有全局性!另外 global 变量也不受命名空间影响!
 
  附:PHP常量详解:define和const的区别
 
  额,补充一点,还有可能到 导入的命名空间下去找!
 
  使用建议:
 
  1、强烈推荐使用“命名空间”的功能;
 
  2、只把“类”命令空间化,其他的(如函数、常量)最好还是设计为全局性,即放在全局命名空间中,方便调用;
 
  3、命名空间 + autoload机制,实现“类文件”自动加载
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!