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 VS ASP
Oct 09 PHP
PHP新手上路(十四)
Oct 09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
ie6 动态缩略图不显示的原因
Jun 21 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
利用PHP访问带有密码的Redis方法示例
Feb 09 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
php7新特性的理解和比较总结
Apr 14 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的一些小问题
2010/07/03 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
页面乱码问题的根源及其分析
2013/08/09 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
Python抓取京东图书评论数据
2014/08/31 Python
python求解水仙花数的方法
2015/05/11 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
高三自我鉴定范文
2013/10/19 职场文书
联谊活动策划书
2014/01/26 职场文书
《钱学森》听课反思
2014/03/01 职场文书
节约用水的口号
2014/06/20 职场文书
出国签证在职证明范本
2014/11/24 职场文书
python库sklearn常用操作
2021/08/23 Python