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自动反斜杠的函数代码
Jan 05 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
php多文件上传实现代码
Feb 20 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
php实现httpRequest的方法
Mar 13 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 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的错误信息
2006/10/09 PHP
十天学会php(1)
2006/10/09 PHP
利用js调用后台php进行数据处理原码
2006/10/09 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
关于PHP开发的9条建议
2015/07/27 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python开发之list操作实例分析
2016/02/22 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
利用python画出AUC曲线的实例
2020/02/28 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
承认错误的检讨书
2014/01/30 职场文书
教师自我反思材料
2014/02/14 职场文书
售后服务承诺书
2014/03/26 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
体育部部长竞选稿
2015/11/21 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书