PHP中命名空间的使用例子


Posted in PHP onMarch 22, 2019

程序语言中的命名空间指的是一种特殊的作用域,它包含处于该作用域下的标识符,同时它本身也是一种标识符。可以把命名空间与操作系统的目录对应起来。一个命名空间相当于一个目录,命名空间里的类,函数,常量,相当于目录里的文件。同一个目录(命名空间)里的文件名不能相同,但是不同的目录里可以有相同名字的文件。

使用命名空间可以解决名字冲突,比如定义了一个类,正好这个类与PHP内部的类或是include进来的一个类库里的类重名的时候。同时,命名空间还可以提高代码可读性,命名空间有一个别名功能,它可以帮你给一个长达十几个字符的类名起一个别名,从而缩短代码,也不用担心与其他空间的命名冲突。

PHP中,只有类、函数、常量会受命名空间影响,php 5.3以后可以使用const关键字来定义常量,5.3这前使用define,命名空间只对const关键字有效。

如下php代码:在file.php文件中,用namespace定义了一个常量,一个函数和一个类:(file1.php)

<?php
namespace MyProject; //定义命名空间MyProject
const A = 1;
function MyFunc(){
 return __FUNCTION__;
}
class MyClass{
 static function MyMethod(){
 return __METHOD__;
 }
}
?>

定义了命名空间后,使用的时候就要加上命名空间的名称,如下php代码:(file2.php)

<?php
include ("file1.php");
echo MyProject\A."<br>";
echo MyProject\MyFunc()."<br>";
echo MyProject\MyClass::MyMethod();
?>

定义了命名空间后,在同一个文件中,只要不属于同一个命名空间,就可以使用不同的方法,变量和类了!

命名空间可以有多层次模式,如下:

namespace MyProject\Sunname;

一个php文件中可以有多个不同的命名空间,如下代码:(file3.php)

<?php
namespace MyProject; //定义命名空间MyProject
const A = php;
function MyFunc(){
 return __FUNCTION__;
}
class MyClass{
 static function MyMethod(){
 return __METHOD__;
 }
}
//再定义一个命名空间
namespace AnotherMyProject; //定义命名空间AnotherMyProject
const A = php;
function MyFunc(){
 return __FUNCTION__;
}
class MyClass{
 static function MyMethod(){
 return __METHOD__;
 }
}
?>

不仅如此,还可以用use关键词导入命名空间,如下php代码:

<?php
include ("file1.php");
use MyProject as ns;
echo ns\A."<br>";
echo ns\MyFunc()."<br>";
echo ns\MyClass::MyMethod();
?>

还有一个需要注意的东西,__NAMESPACE__常量,这个是用于返回当前命名空间的名称,在调试的时候可能很有用!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
两个强悍的php 图像处理类1
Jun 15 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
详解php实现页面静态化原理
Jun 21 PHP
PHP 传输会话curl函数的实例详解
Sep 12 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 PHP
PHP SESSION机制的理解与实例
Mar 22 #PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 #PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 #PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 #PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 #PHP
简单实用的PHP文本缓存类实例
Mar 22 #PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 #PHP
You might like
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
很让人受教的 提高php代码质量36计
2012/09/05 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
python time模块用法实例详解
2014/09/11 Python
Python实现简单的语音识别系统
2017/12/13 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python根据多个文件名批量查找文件
2019/08/13 Python
python3获取url文件大小示例代码
2019/09/18 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
python中实现栈的三种方法
2020/12/19 Python
学生实习介绍信
2014/01/15 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js