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 相关文章推荐
centos 5.6 升级php到5.3的方法
May 14 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
遭遇php的in_array低性能问题
Sep 17 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
YII2 实现多语言配置的方法分享
Jan 11 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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
农民和部队如何穿矿
2020/03/04 星际争霸
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
python中reload重载实例用法
2020/12/15 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
如何强制垃圾回收
2015/10/06 面试题
文化产业实施方案
2014/06/07 职场文书
结对共建协议书
2014/08/20 职场文书
统计学教授推荐信
2014/09/18 职场文书
西岭雪山导游词
2015/02/06 职场文书
离婚答辩状范文
2015/05/22 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
python装饰器代码解析
2022/03/23 Python
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js