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的正则处理函数总结分析
Jun 20 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
微信支付开发维权通知实例
Jul 12 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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文本数据库的搜索方法
2006/10/09 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
帝国cms常用标签汇总
2015/07/06 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
快速入门python学习笔记
2017/12/06 Python
python在文本开头插入一行的实例
2018/05/02 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
python 阶乘累加和的实例
2019/02/01 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
Java程序员面试90题
2013/10/19 面试题
会计专业毕业生自我评价
2013/09/25 职场文书
企业节能减排实施方案
2014/03/19 职场文书
校园广播稿精选
2014/10/01 职场文书
2015年市场部工作总结
2015/04/30 职场文书
刑事上诉状范文
2015/05/22 职场文书
MySQL8.0.18配置多主一从
2021/06/21 MySQL