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边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
简单的php中文转拼音的实现代码
Feb 11 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
php中session与cookie的比较
Jan 27 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
php访问对象中的成员的实例方法
Nov 17 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
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
Python实现list反转实例汇总
2014/11/11 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
应届毕业生求职自荐书
2014/01/03 职场文书
关于学习的演讲稿
2014/05/10 职场文书
合作协议书范文
2014/08/20 职场文书
学习退步检讨书
2014/09/28 职场文书
英文版辞职信
2015/02/28 职场文书
通知的格式范文
2015/04/27 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server