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设计模式 Mediator (中介者模式)
Jun 26 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
详细对比php中类继承和接口继承
Oct 11 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
laravel中的fillable和guarded属性详解
Oct 23 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 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 神盾解密工具 ”
2014/06/20 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
JS的replace方法介绍
2012/10/20 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python利用7z批量解压rar的实现
2019/08/07 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
计算机网络专业推荐信
2013/11/24 职场文书
酒吧副总经理岗位职责
2013/12/10 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
上课说话检讨书
2015/01/27 职场文书
2015年复活节活动总结
2015/02/27 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python