thinkphp命名空间用法实例详解

 更新时间:2015年12月30日 11:50:15   作者:nd  
这篇文章主要介绍了thinkphp命名空间用法,结合实例形式详细分析了thinkPHP命名空间的功能及具体使用技巧,需要的朋友可以参考下

本文实例讲述了thinkphp命名空间用法。分享给大家供大家参考,具体如下:

新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制。

需要给类库定义所在的命名空间,命名空间的路径和类库文件的目录一致,就可以实现类的自动加载,例如Org\Util\File类的定义为

namespace Org\Util;
class File {
}

其所在的路径是ThinkPHP/Library/Org/Util/File.class.php,我们实例化该类写法如下:

复制代码 代码如下:
$class = new \Org\Util\File();

系统会自动加载上述文件,这样就不需要在实例化命名空间定义的类之前导入类库文件了。

根命名空间是一个很关键的概念,以上面的Org\Util\File类为例,Org就是一个根命名空间,其对应的初始命名空间目录就是系统的类库目录ThinkPHP/Liberary,该目录下一级子目录会自动识别为根命名空间,这些命名空间无需注册就可使用。

我们在Library目录下面新增一个My根命名空间目录,然后定义一个Test类如下:

namespace My;
class Test
{
   public function sayHello()
  {
    echo 'hello';
  }
}

将test类保存在ThinkPHP/Liberary/My/Test.class.php,我们就可以直接实例化和调用

$Test = new \My\Test();
$Test->sayHello();

模块中的类库命名空间是以模块名命名,例如:

namespace Home\Model;
class UserModel extends \Think\Model
{
}

其类文件位于Application/Home/Model/UserModel.class.php

namespace Admin\Event;
class UserEvent {
}

其类文件位于Application/Admin/Event/UserEvent.class.php

3.2.1版本以上允许设置对应用类库不使用命名空间,在配置文件中设置如下:

复制代码 代码如下:
'APP_USE_NAMESPACE'    =>    false,

这样应用类库中不再需要使用命名空间的定义,但是继承和调用核心类库的时候还是需要使用命名空间,例如,下面的应用类库中将不再写namespace Admin\Model;

class UserModel extends \Think\Model {
}

特别注意:如果你需要在3.2版本中实例化PHP内置的类库或者第三方的没有使用命名空间定义的类,需要采用下面的方式:

$class =  new \stdClass();
$sxml =  new \SimpleXmlElement($xmlstr);

希望本文所述对大家基于thinkPHP框架的PHP程序设计有所帮助。

相关文章

  • 基于Zookeeper的使用详解

    基于Zookeeper的使用详解

    本篇文章介绍了,基于Zookeeper的使用说明,需要的朋友参考下
    2013-05-05
  • 最新版本PHP 7 vs HHVM 多角度比较

    最新版本PHP 7 vs HHVM 多角度比较

    PHP 7 是 PHP 社区对 HHVM 的回应。PHP 7 发布的预览版本号称比之前的 PHP 5 的性能要提升100%。不过,PHP 还有一个竞争对手 HHVM (HipHop Virtual Machine) 一个运行 PHP 代码的虚拟工具。二者直接的比较正在升温,那么让我们来看一下他们直接的性能对比吧
    2016-02-02
  • Laravel中表单size验证数字示例详解

    Laravel中表单size验证数字示例详解

    Laravel 的验证功能非常强大,基本上常见的需求都有对应的验证规则,下面这篇文章主要给大家介绍了关于Laravel中表单size验证数字的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • PHP处理Ajax请求与Ajax跨域问题

    PHP处理Ajax请求与Ajax跨域问题

    这篇文章主要介绍了PHP处理Ajax请求与Ajax跨域问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • ThinkPHP实现跨模块调用操作方法概述

    ThinkPHP实现跨模块调用操作方法概述

    使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块的方法。这篇文章主要介绍了ThinkPHP跨模块调用操作,需要的朋友可以参考下
    2014-06-06
  • php验证码实现代码(3种)

    php验证码实现代码(3种)

    这篇文章主要介绍了php验证码实现代码,纯数字验证码,数字加英文验证码还有一种汉字验证码,感兴趣的小伙伴们可以参考一下
    2015-09-09
  • PHP设计模式(一)工厂模式Factory实例详解【创建型】

    PHP设计模式(一)工厂模式Factory实例详解【创建型】

    这篇文章主要介绍了PHP设计模式 工厂模式Factory,结合实例形式详细分析了工厂模式的基本概念、原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • php制作unicode解码工具(unicode编码转换器)代码分享

    php制作unicode解码工具(unicode编码转换器)代码分享

    php制作Unicode编码解码在线转换工具代码分享
    2013-12-12
  • PHP获取input输入框中的值去数据库比较显示出来

    PHP获取input输入框中的值去数据库比较显示出来

    这篇文章主要介绍了PHP获取input输入框中的值去数据库比较显示出来的相关资料,前端还算比较简单,php后台接受并查询,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • 在php中设置session用memcache来存储的方法总结

    在php中设置session用memcache来存储的方法总结

    memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端,下面通过本文给大家介绍在php中设置session用memcache来存储的方法总结,对php session memcache相关知识感兴趣的朋友一起学习吧
    2016-01-01

最新评论