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程序员工具
May 26 PHP
php相当简单的分页类
Oct 02 PHP
20个PHP常用类库小结
Sep 11 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php字符串截取的简单方法
Jul 04 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
PHP操作Postgresql封装类与应用完整实例
Apr 24 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
PHP与Web页面交互操作实例分析
Jun 02 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 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 foreach循环中使用引用的问题
2013/11/06 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
php实现两个数组相加的方法
2015/02/17 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
表单内同名元素的控制
2006/11/22 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
毕业生机械建模求职信
2013/10/14 职场文书
国际贸易专业推荐信
2013/11/15 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
预备党员表决心书
2014/03/11 职场文书
红色旅游心得体会
2014/09/03 职场文书
党员检讨书
2014/10/13 职场文书