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者的疑难问答(1)
Oct 09 PHP
在php MYSQL中插入当前时间
Apr 06 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
php自定义函数截取汉字长度
May 15 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
PHP技术开发微信公众平台
Jul 22 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 PHP
php下的原生ajax请求用法实例分析
Feb 28 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中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
PHP中文乱码解决方案
2015/03/05 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
js数组去重的方法总结
2019/01/18 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
初中军训感想300字
2014/03/05 职场文书
单位单身证明样本
2014/10/11 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
青年志愿者活动感想
2015/08/07 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript