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 相关文章推荐
PHP文件下载类
Dec 06 PHP
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
php自定义的格式化时间示例代码
Dec 05 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
php数组键值用法实例分析
Feb 27 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
php+mysql实现无限级分类
Nov 11 PHP
基于PHP实现简单的随机抽奖小程序
Jan 05 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 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注销代码(session注销)
2012/05/31 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
php面向对象值单例模式
2016/05/03 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
JS实现密码框效果
2020/09/10 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python2.x实现人民币转大写人民币
2018/06/20 Python
Python对excel文档的操作方法详解
2018/12/10 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
18岁生日感言
2014/01/12 职场文书
报关专员求职信范文
2014/02/22 职场文书
党员一句话承诺大全
2014/03/28 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
雷人标语集锦
2014/06/19 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
不同意离婚上诉状
2015/05/23 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript