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&amp;MYSQL分页原理及实现
Jan 02 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
yii操作cookie实例简介
Jul 09 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 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
随时给自己贴的图片加文字的php代码
2007/03/08 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
javascript数组拍平方法总结
2018/01/20 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
python连接字符串的方法小结
2015/07/13 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
python实现名片管理器的示例代码
2019/12/17 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
python下载的库包存放路径
2020/07/27 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
简单的项目建议书模板
2014/03/12 职场文书
护理学专业求职信
2014/06/29 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
2014年信访工作总结
2014/11/17 职场文书
2014年环保工作总结
2014/11/26 职场文书
加入学生会自荐书
2015/03/05 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书