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

 更新时间:2014年08月18日 09:22:44   投稿:hebedich  
上篇文章介绍了PHP命名空间的一些术语,其解析规则,本文我们来继续讲述PHP命名空间动态访问及使用技巧,希望能有所帮助

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;
}

相关文章

  • 如何重写Laravel异常处理类详解

    如何重写Laravel异常处理类详解

    这篇文章主要给大家介绍了关于如何重写Laravel异常处理类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 在PHP站点的页面上添加Facebook评论插件的实例教程

    在PHP站点的页面上添加Facebook评论插件的实例教程

    这篇文章主要介绍了在PHP站点的页面上添加Facebook评论插件的实例教程,这样用户便可以以Facebook的用户身份在Facebook样式的评论表单上发表评论,需要的朋友可以参考下
    2016-01-01
  • Windows IIS PHP 5.2 安装与配置方法

    Windows IIS PHP 5.2 安装与配置方法

    Windows下PHP的安装虽然简单,但如果不注意方法,仍然会让你头疼。此外,PHP 5.2版本与之前4.x版本也有一些不同,所以有必要记录一下,避免下次忘记了这样的安装配置方法。
    2009-06-06
  • PHPCMS V9 添加二级导航的思路详解

    PHPCMS V9 添加二级导航的思路详解

    这篇文章主要介绍了PHPCMS V9 添加二级导航所遇到些问题,查询导航栏的信息时返回的$r[arrchildid]与自己想象的不符,文档上说是返回子栏目id但是却有些不同。下面小编通过分享本文给大家解答下
    2016-10-10
  • thinkphp5.1验证码及验证码验证功能的实现详解

    thinkphp5.1验证码及验证码验证功能的实现详解

    这篇文章主要介绍了thinkphp5.1验证码及验证码验证功能的实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • php生成html文件方法总结

    php生成html文件方法总结

    本文这里汇总了一些自己使用的和网上搜集来的php生成html静态文件的方法,非常的使用,也分析了他们的优缺点,是篇非常不错的文章,这里推荐给大家。
    2014-12-12
  • Codeigniter实现智能裁剪图片的方法

    Codeigniter实现智能裁剪图片的方法

    这篇文章主要介绍了Codeigniter实现智能裁剪图片的方法,可以做到裁剪后不失真,尽可能保留图片主题含义。需要的朋友可以参考下
    2014-06-06
  • ThinkPHP后台首页index使用frameset时的注意事项分析

    ThinkPHP后台首页index使用frameset时的注意事项分析

    这篇文章主要介绍了ThinkPHP后台首页index使用frameset时的注意事项,需要的朋友可以参考下
    2014-08-08
  • php后台多用户权限组思路与实现程序代码分享

    php后台多用户权限组思路与实现程序代码分享

    很多时候我们再开发过程中需要考虑到多用户权限问题,这篇文章大家可以参考下
    2012-02-02
  • php生成word并下载代码实例

    php生成word并下载代码实例

    这篇文章主要介绍了php生成word并下载代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论