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 相关文章推荐
DISCUZ 分页代码
Jan 02 PHP
php intval的测试代码发现问题
Jul 27 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
php基于curl扩展制作跨平台的restfule 接口
May 11 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
PHP实现文件上传下载实例
Oct 18 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 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中session_unset与session_destroy的区别分析
2011/06/16 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
package.json文件配置详解
2017/06/15 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
自荐信如何制作?
2014/02/21 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
学校节能减排倡议书
2014/05/16 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
MySQL详细讲解变量variables的用法
2022/06/21 MySQL
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript