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递归调用与静态变量使用
Dec 16 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
php中socket的用法详解
Oct 24 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
php生成带logo二维码方法小结
Apr 08 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP count_chars()函数讲解
Feb 14 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
node.js require() 源码解读
2015/12/13 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
详细介绍Ruby中的正则表达式
2015/04/10 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
对Python 内建函数和保留字详解
2018/10/15 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
python装饰器练习题及答案
2019/11/01 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
python调用私有属性的方法总结
2020/07/24 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
python常量折叠基础知识点讲解
2021/02/28 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
"序列点" 是什么
2016/07/29 面试题
售后服务承诺书范文
2014/03/26 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
法制教育观后感
2015/06/17 职场文书
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python