PHP命名空间(namespace)的使用基础及示例


Posted in PHP onAugust 18, 2014

PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。

一. PHP的命名空间主要解决三种冲突的问题:常量,函数,类

通俗理解:namespace就相当于是用来建一个目录,将namespace下面的代码放在该目录里面,与外面的区分开来。

/*
|---------------------------------
|namespace示例
|@黑眼诗人 <www.chenwei.ws>
|---------------------------------
*/
namespace myself;
function var_dump()
{
  echo 100;
}
var_dump();    //调用自定义函数(相对路径方式)
\myself\var_dump();  //调用自定义函数(绝对路径方式) 
\var_dump(100);     //调用全局的(系统的函数)

注意:namespace 之前不能有任何代码,除了declare();多个文件可以使用同一个命名空间,但同一命名空间下定义的内容是不能冲突的。namespace支持子命名空间,如:namespace \myself\good,相当于多级目录的概念。

二. 同一文件中存在多个命名空间的情况

1.

/**
 * 同一文件中若使用了多个命名空间,一般写法
 */
namespace nihao\shijie;
function demo()
{
//.......
}
namespace hello\world;
function test()
{
  //........
}

\nihao\shijie\demo();
\hello\world\test();

2.

/**
 * 同一文件中若使用了多个命名空间,建议大括号扩起来
 */
namespace nihao\shijie{
function test_one()
{
  //......
};
}
namespace hello\world{
function test_two()
{
  //........
}
}
\nihao\shijie\test_one();
\hello\world\test_two();

同一文件内使用多个命名空间,主要用于项目将多个PHP脚本合并在同一文件中,实际中不提倡使用!

三. 名称解析规则(几个概念)

1.非限定名称:名称中不包含命名空间分割符,如:myself

2.限定名称:名称中含有命名空间分割符,如:nihao\shijie

3.完全限定名称:名称中包含分割符,并以命名空间分割符开始,如:\nihao\shijie  (即绝对路径的概念)

PHP 相关文章推荐
PHP实现分页的一个示例
Oct 09 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
php 随机排序广告的实现代码
May 09 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
详解php几行代码实现CSV格式文件输出
Jul 01 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
mac环境中使用brew安装php5.5.15
Aug 18 #PHP
PHP 正则表达式常用函数
Aug 17 #PHP
PHP常用正则表达式集锦
Aug 17 #PHP
学习php中的正则表达式
Aug 17 #PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 #PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 #PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
Aug 16 #PHP
You might like
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
JSONP基础知识详解
2017/03/19 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
python利用hook技术破解https的实例代码
2013/03/25 Python
python多重继承新算法C3介绍
2014/09/28 Python
Python调用命令行进度条的方法
2015/05/05 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python使用selenium实现批量文件下载
2019/03/11 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
Keras搭建自编码器操作
2020/07/03 Python
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
C# Debug和Testing相关面试题
2015/10/25 面试题
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
教师年度考核自我鉴定
2014/01/19 职场文书
大学军训感言1000字
2014/02/25 职场文书
煤矿安全承诺书
2014/05/22 职场文书
2015年资料员工作总结
2015/04/25 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
nginx内存池源码解析
2021/11/20 Servers
Python列表的索引与切片
2022/04/07 Python