PHP命名空间入门教程

 PHP(OOP)编程入门   高蒙   阅读(1053)   评论(0)   2016-12-06 18:28:10     


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

命名空间概述

定义命名空间

定义子命名空间

在同一个文件中定义多个命名空间

使用命名空间:基础

命名空间和动态语言特征

namespace关键字和__NAMESPACE__常量

使用命名空间:别名/导入

注意:PHP 命名空间目前仅支持 类名称命名空间 的导入,暂不支持导入函数或常量!

全局空间

使用命名空间:后备全局函数/常量

名称解析规则

FAQ: things you need to know about namespaces

 


 

学习、实践笔记:

1、定义命名空间时,命名空间开头不能有反转义符“\”,即 namespace \A\B\C; 是错误的,此命名空间将不起作用!namespace A\B\C; 才是对的。

2、导入命名空间时,如果命名空间是一级的,则开头一定要加反转义符“\”,即 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机制,实现“类文件”自动加载;




相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客