PHP中的use关键字概述


Posted in PHP onJuly 23, 2014

很多开源系统如osCommerce框架中,都会在其源码中找到use这个关键字,如osCommerce框架中就在index.php文件中出现了这段源码:

use osCommerce\OM\Core\Autoloader;
use osCommerce\OM\Core\OSCOM;

其实,php的use关键字是自php5.3以上版本引入的。它的作用是给一个外部引用起别名。这是命名空间的一个重要特性,它同基于unix的文件系统的为文件或目录创建连接标志相类似。

PHP命名空间支持三种别名方式(或者说引用):

1、为一个类取别名

2、为一个接口取别名

3、为一个命名空间取别名

这三种方式都是用 use 关键字来完成。下面是三种别名的分别举例:
//Example #1 importing/aliasing with the use operator

<?php
namespacefoo;
useMy\Full\ClassnameasAnother;

//thisisthesameasuseMy\Full\NSnameasNSname
useMy\Full\NSname;

//importingaglobalclass
useArrayObject;

$obj=newnamespace\Another;//instantiatesobjectofclassfoo\Another
$obj=newAnother;//instantiatesobjectofclassMy\Full\Classname
NSname\subns\func();//callsfunctionMy\Full\NSname\subns\func
$a=newArrayObject(array(1));//instantiatesobjectofclassArrayObject
//withoutthe"useArrayObject"wewouldinstantiateanobjectofclassfoo\ArrayObject
?>

注意的一点是,对于已命名的名字,全称就包含了分隔符,比如 Foo\Bar,而不能用FooBar,而“\Foo\Bar”这个头部的"\"是没必要的,也不建议这样写。引入名必须是全称,并且跟当前命名空间没有程序上的关联

PHP也可以在同一行上申明多个,等同于上面的写法

<?php
useMy\Full\ClassnameasAnother,My\Full\NSname;

$obj=newAnother;//instantiatesobjectofclassMy\Full\Classname
NSname\subns\func();//callsfunctionMy\Full\NSname\subns\func
?>

还有值得一说的是,引入是在编译时执行的,因此,别名不会影响动态类,例如:

<?php
useMy\Full\ClassnameasAnother,My\Full\NSname;

$obj=newAnother;//instantiatesobjectofclassMy\Full\Classname
$a = 'Another';
$obj = New $a; // instantiates object of class Another
?>

这里由于给变量$a 赋值了 'Another',编译的时候,就将$a 定位到 Classname 了。

更详细的用法读者可以查阅php手册或关注本站后续相关文章。

PHP 相关文章推荐
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
php中的观察者模式简单实例
Jan 20 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
实现PHP搜索加分页
Oct 12 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 #PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 #PHP
ThinkPHP权限认证Auth实例详解
Jul 22 #PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 #PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 #PHP
php.ini save_handler 修改不生效的解决办法
Jul 22 #PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 #PHP
You might like
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
生成缩略图
2006/10/09 PHP
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
PHP运行模式的深入理解
2013/06/03 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
Python实现的数据结构与算法之链表详解
2015/04/22 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
python 以16进制打印输出的方法
2018/07/09 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
乡镇党建工作汇报材料
2014/08/14 职场文书
暑假安全保证书
2015/02/28 职场文书
爱国教育主题班会
2015/08/14 职场文书
导游词之清晏园
2019/11/22 职场文书