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 socke 向指定页面提交数据
Jul 23 PHP
PHP 引用是个坏习惯
Mar 12 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 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获取错误信息的方法
2015/07/17 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
angular2实现统一的http请求头方法
2018/08/13 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python实现的快速排序算法详解
2017/08/01 Python
python逆序打印各位数字的方法
2018/06/25 Python
python实现石头剪刀布程序
2021/01/20 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
公司2014年度工作总结
2014/12/10 职场文书
三峡人家导游词
2015/01/31 职场文书
教师远程培训心得体会
2016/01/09 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript