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里的JS打印函数
Oct 09 PHP
第十三节--对象串行化
Nov 16 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
PHP句法规则详解 入门学习
Nov 09 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
PHP实现无限极分类图文教程
Nov 25 PHP
php中关于socket的系列函数总结
May 18 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
深入php之规范编程命名小结
2013/05/15 PHP
php下Memcached入门实例解析
2015/01/05 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
js实现简单进度条效果
2020/03/25 Javascript
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
python 初始化一个定长的数组实例
2019/12/02 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
办公室主任岗位职责
2013/11/08 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
小学生常见病防治方案
2014/06/06 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript