PHP命名空间入门教程
PHP5.3当中就引入了“命名空间”的概念,一直都没怎么关注和使用,其实学习它也挺简单的,看官方的教程就行了:
注意: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 变量也不受命名空间影响!
额,补充一点,还有可能到 导入的命名空间 下去找!
使用建议:
1、强烈推荐使用“命名空间”的功能;
2、只把“类”命令空间化,其他的(如函数、常量)最好还是设计为全局性,即放在全局命名空间中,方便调用;
3、命名空间 + autoload机制,实现“类文件”自动加载;
PHP命名空间入门教程的更多相关文章
- PHP面向对象(OOP)编程入门教程
面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...
- 转载:TypeScript 简介与《TypeScript 中文入门教程》
简介 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构 ...
- WCF入门教程(五)配置文件
WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
- WCF入门教程(四)通过Host代码方式来承载服务
WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...
- WCF入门教程(三)定义服务协定--属性标签
WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...
- 转载:《TypeScript 中文入门教程》
缘由 事情是这样的,我想搜索 TypeScript 中文教程,结果在 https://www.baidu.com , https://cn.bing.com ,上都找不到官方的翻译,也没有一个像样的翻 ...
- .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比
在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...
- Docker入门教程(七)Docker API
Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...
- Docker入门教程(四)Docker Registry
Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...
随机推荐
- excel处理数字的时候避免自动转为double
帮同事解决了一个POI解析Excel的功能,就是他想读出单元格中的原始内容,但是poi在处理数字的时候会自动转换为double了,这样对于一些对1和1.00有严格区分的场景下,会出现问题.我看网上很多 ...
- 使用Java中的动态代理实现数据库连接池
2002 年 12 月 05 日 作者通过使用JAVA中的动态代理实现数据库连接池,使使用者可以以普通的jdbc连接的使用习惯来使用连接池. 数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的 ...
- 解决Bootstrap模态框切换时页面抖动 or页面滚动条
Bootstrap为了让所有的页面(这里指内容溢出和不溢出)显示效果一样,采取的方法如下: 当Modal显示时,设置body -- overflow:hidden;margin-right:15px; ...
- mysqli连接数据库的模板
<?php $host="localhost"; $db_user="root"; //数据库用户 $db_pass=""; //数据 ...
- 表单提交set集合问题
提交时使用数组接收,遍历将数组添加到set集合 用户表user 字段id,name,set<xk> xks=new HashSet<xk>(); 选课表xk 字段id,name ...
- MySQL学习笔记——约束
1.约束是在表上强制执行的数据检验规则,约束主要用于保证数据库的完整性. 2.当表中数据有相互依赖性时,可以保护相关的数据不被删除. 3.大部分数据库支持下面五类完整性约束: - NOT NULL非空 ...
- CSS3 让图片镜像对称
1.HTML代码 <!DOCTYPE html> <html> <head> <title>test</title> </head&g ...
- js基本数据类型和typeof
JavaScript数据类型是非常简洁的,它只定义了6中基本数据类型 null:空.无.表示不存在,当为对象的属性赋值为null,表示删除该属性 undefined:未定义.当声明变量却没有赋值时会显 ...
- EF批量插入 扩展
https://efbulkinsert.codeplex.com/ https://github.com/loresoft/EntityFramework.Extended
- CKEditor的使用方法
CKEditor的使用方法 2014-03-31 09:44 8649人阅读 评论(1) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. ckeditor 的官方网站是 http:/ ...