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 存取 MySQL 数据库的一个例子
Oct 09 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
Thinkphp中的curd应用实用要点
Jan 04 PHP
浅谈php自定义错误日志
Feb 13 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 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读取PDF内容配合Xpdf的使用
2012/11/24 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
学习php开源项目的源码指南
2014/12/21 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
关于express与koa的使用对比详解
2018/01/25 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python中的__SLOTS__属性使用示例
2015/02/18 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
热血教师观后感
2015/06/10 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python