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注入实例
Oct 09 PHP
PHP脚本的10个技巧(6)
Oct 09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
php解决约瑟夫环算法实例分析
Sep 30 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加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
python开发之函数定义实例分析
2015/11/12 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Python3最长回文子串算法示例
2019/03/04 Python
python的sorted用法详解
2019/06/25 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
高中生自我鉴定范文
2013/10/30 职场文书
应届毕业生求职信
2013/11/30 职场文书
考试没考好检讨书
2014/01/31 职场文书
护士个人年终总结
2015/02/13 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
暂住证证明
2015/06/19 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python