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中的正规表达式(二)
Oct 09 PHP
解决GD中文乱码问题
Feb 14 PHP
ASP和PHP都是可以删除自身的
Apr 09 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
PHP 时间日期操作实战
Aug 26 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
php时区转换转换函数
Jan 07 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 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
用ODBC的分页显示
2006/10/09 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
js left,right,mid函数
2008/06/10 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
Python3基础之基本运算符概述
2014/08/13 Python
Python性能优化的20条建议
2014/10/25 Python
python实现超简单端口转发的方法
2015/03/13 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
Python金融数据可视化汇总
2017/11/17 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
Python底层封装实现方法详解
2020/01/22 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
优秀的茶餐厅创业计划书
2014/01/03 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
土建技术员岗位职责
2015/04/11 职场文书
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python