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中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
详解php中的implements 使用
Jun 13 PHP
PHP常见字符串操作函数与用法总结
Mar 04 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 17 PHP
laravel中的fillable和guarded属性详解
Oct 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
php中如何执行linux命令详解
2018/11/06 PHP
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
Angular路由简单学习
2016/12/26 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
python 性能提升的几种方法
2016/07/15 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
优秀少先队工作者事迹材料
2014/05/13 职场文书
科学发展观演讲稿
2014/09/11 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers