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 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
php header示例代码(推荐)
Sep 08 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
PHP英文字母大小写转换函数小结
May 03 PHP
PHP类的反射用法实例
Nov 03 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php递归删除目录与文件的方法
Jan 30 PHP
php定义参数数量可变的函数用法实例
Mar 16 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
实例讲解php数据访问
2016/05/09 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
python 循环while和for in简单实例
2016/08/16 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Python函数中的可变长参数详解
2019/09/12 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
如何利用Python识别图片中的文字
2020/05/31 Python
单位介绍信范文
2014/01/18 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
运动会广播稿100字
2014/09/14 职场文书
晚会开场白和结束语
2015/05/29 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers