PHP命名空间(namespace)的动态访问及使用技巧


Posted in PHP onAugust 18, 2014

PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。

一.动态访问命名空间的元素

namespace me\poet;
function test()
{
  echo '1111';
}
$fun = 'test';//不能这么用,最后$fun()无法动态调用到test():Fatal error: Call to undefined function test()
$fun = '\me\poet\test';//正确
//$fun = 'me\poet\test';//正确
$fun();

也就是说,动态调用必须是 限定名称 或 完全限定名称(概念参考:PHP命名空间的使用基础)

二.魔术常量 和 操作符

namespace me\poet;
function test()
{
  echo '1';
}
echo __NAMESPACE__; //魔术常量:命名空间的名称(输出 me\poet)
//namespace操作符:显式访问当前命名空间或子命名空间中的元素,等价于类中的self操作符
\me\poet\test();
namespace\test();
//上两行代码等价。

三.别名、导入 和 全局空间(含多个例子)

namespace ws\weichen\www;
use ws\weichen\www as poet;//定义别名poet
//use ws\weichen\www; //不加as,则取最后的作为别名(www)
function demo()
{
  echo '1';
}
\ws\weichen\www\demo();
poet\demo();
//www\demo();//不加as的情况,则这样调用

以上三行代码效果一样。
按规则(ws\weichen\www)命名的好处:若更换域名,只要把前缀名称改了就可以,不影响后面代码中别名www的使用。

/* 导入 */
include 'hello.class.php';
use \ws\weichen\www;
use \Hello;
/*--------------------------------------------------------*/
/* 支持多个use语句 */
use \nihao\shijie as hello, \ws\weichen\www;
/*--------------------------------------------------------*/
/* 全局空间:反斜线调用 */
namespace A\B\C;
//这个函数是 A\B\C\fopen();
function fopen()
{
  $f = \fopen('demo.txt');//调用全局fopen函数
  return $f;
}
PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
使用PHP获取网络文件的实现代码
Jan 01 PHP
基于Zookeeper的使用详解
May 02 PHP
destoon找回管理员密码的方法
Jun 21 PHP
PHP实现图片压缩的两则实例
Jul 19 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
php轻松实现文件上传功能
Mar 03 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
php实现每日签到功能
Nov 29 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 #PHP
mac环境中使用brew安装php5.5.15
Aug 18 #PHP
PHP 正则表达式常用函数
Aug 17 #PHP
PHP常用正则表达式集锦
Aug 17 #PHP
学习php中的正则表达式
Aug 17 #PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 #PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 #PHP
You might like
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php rsa加密解密使用详解
2015/01/14 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
JS 常用校验函数
2009/03/26 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
用Python编写简单的微博爬虫
2016/03/04 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
python适合人工智能的理由和优势
2019/06/28 Python
Python定义函数实现累计求和操作
2020/05/03 Python
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
企业授权委托书范本
2014/04/02 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
品德评语大全
2014/05/05 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
绘画专业自荐信
2014/07/04 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
运动会3000米加油稿
2015/07/21 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Python+pyaudio实现音频控制示例详解
2022/07/23 Python