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 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
php递归列出所有文件和目录的代码
Sep 10 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
php通用防注入程序 推荐
Feb 26 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
PHP会话控制实例分析
Dec 24 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 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
优化使用mysql存储session的php代码
2008/01/10 PHP
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
深入分析php之面向对象
2013/05/15 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
实例分析js事件循环机制
2017/12/13 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Python用GET方法上传文件
2015/03/10 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
python用requests实现http请求代码实例
2019/10/31 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Python中格式化字符串的四种实现
2020/05/26 Python
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
如何在Shell脚本中使用函数
2015/09/06 面试题
茶叶生产计划书
2014/01/10 职场文书
婚礼秀策划方案
2014/05/19 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python