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 相关文章推荐
介绍几个array库的新函数 php
Dec 29 PHP
PHP 图像尺寸调整代码
May 26 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
关于URL最大长度限制的相关资料查证
Dec 23 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
php unlink()函数使用教程
Jul 12 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
php文件上传类的分享
2017/07/06 PHP
在视频前插入广告
2006/11/20 Javascript
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
React中的refs的使用教程
2018/02/13 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
Python生成器常见问题及解决方案
2020/03/21 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
业务副厂长岗位职责
2014/01/03 职场文书
2014年教师节活动总结
2014/08/29 职场文书
学生检讨书怎么写
2014/10/09 职场文书