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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
Cakephp 执行主要流程
Mar 24 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
php异常处理使用示例
Feb 25 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
PHP设计模式之工厂模式与单例模式
Sep 28 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 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中的函数嵌套层数限制分析
2011/06/13 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
PHP反射机制用法实例
2014/08/28 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
Python数据类型学习笔记
2016/01/13 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
python多维数组切片方法
2018/04/13 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
Django web框架使用url path name详解
2019/04/29 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
python 实现多线程下载视频的代码
2019/11/15 Python
python调用接口的4种方式代码实例
2019/11/19 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
人身损害赔偿协议书范本
2014/09/27 职场文书
九华山导游词
2015/02/03 职场文书
搞笑老公保证书
2015/02/26 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android