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.ini中文版(1)
Oct 09 PHP
如何在php中正确的使用json
Aug 06 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
php备份数据库类分享
Apr 14 PHP
php实现统计网站在线人数的方法
May 12 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
PHP强制转化的形式整理
May 22 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脚本数据库功能详解(下)
2006/10/09 PHP
php自动跳转中英文页面
2008/07/29 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
防止文件缓存的js代码
2013/01/10 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
js倒计时显示实例
2016/12/11 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
JS实现简单短信验证码界面
2017/08/07 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
python保存数据到本地文件的方法
2018/06/23 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
上海期货面试题
2014/01/31 面试题
怎样写演讲稿
2014/01/04 职场文书
个人评价范文分享
2014/01/11 职场文书
公司保密管理制度
2015/08/04 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL