原文:thinkphp学习笔记8—命名空间

新版本(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学习笔记8—命名空间相关推荐

  1. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  2. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  3. ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式

    /*** ThinkPHP version 3.1.3*/ ThinkPHP ( 官方网站:http://www.thinkphp.cn/ ) 目前最新版本是 3.2.2,它要求 PHP 的版本高于 ...

  4. ThinkPHP学习笔记之Model操作

    2019独角兽企业重金招聘Python工程师标准>>> 1. 3种实例化model模型方法 a) new  命名空间GoodsModel(); b) D(["模型标志Goo ...

  5. thinkphp学习笔记13-15集

    13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...

  6. ThinkPHP学习笔记 事务处理

    为什么80%的码农都做不了架构师?>>>    事务处理是数据库数据处理中经常用到的一个功能,特别是商务之类的应用,比如a给b打了钱,数据库中a的钱数应该减少,b的钱数应该增加, 若 ...

  7. thinkPHP学习笔记(2)

    1.调试模式 设置调试模式部分代码如下: 1 <?php 2 define('APP_DEBUG',TRUE); // 开启调试模式 常量定义代码 3 require '/ThinkPHP框架所 ...

  8. thinkPHP学习笔记

    (1)thinkphp中方法的调用 1.调用当前控制器中的方法有以下三种 class Index{public function index() {return "当前控制器中的index方 ...

  9. iOS学习笔记3 - 命名空间

    首先补充说明一下,这个系列不是教程,所以除了很可能会出错之外,而且不会按什么由浅入深的顺序来写.写什么主题完全看心情. 从C#转到Objective-c开发之后,会产生这么一个疑问: Objectiv ...

最新文章

  1. SQL语句中exists和in的区别
  2. 单IP无TMG拓扑Lync Server 2013:活动目录
  3. 【文献学习+方便自己使用】二阶一致性理论
  4. Mozilla Firefox 66 将使用更少的内存,提高扩展性能
  5. java 得到bean的属性_获取javaBean所有属性及类型.doc
  6. stat---文件状态信息结构体
  7. 13. PHP 表数据入口(table data gateway)
  8. 力软敏捷开发框架源码7.0.6旗舰版
  9. 基于阿里云服务器使用宝塔面板进行Hexo建站
  10. java docx4j 合并word_使用docx4j进行docx文档合并。
  11. python制作动态时钟_python实现简易动态时钟
  12. android 手机ssh客户端,android手机ssh客户端ConnectBot
  13. 数据挖掘:数据清洗——缺失值处理
  14. LeetCode上的各种股票最大收益
  15. STL之vector的push_back过程详解
  16. html纵向广告滚动,jquery广告滚动 jquery 实现文字左右滚动
  17. 法卡斯定理(Fakars' Lemma)
  18. 使用gulp编译 sass和less
  19. CQL 函数及多深度关系节点
  20. WPF编程,使用字体图标的一种方法。

热门文章

  1. onvif协议服务器端口,通过onvif协议接入海康、大华NVR步骤
  2. websocket中发生数据丢失_node.js – Websocket传输可靠性(重新连接期间Socket.io数据丢失)...
  3. javascript promise
  4. AudioScheduledSourceNode
  5. javascript window.history
  6. 26 Socket Addressing and Client Socket Programming
  7. echarts map
  8. R语言分类算法之集成学习(Bootstrap Aggregating)
  9. 如何查html病毒svchost.exe,小编教你在Win7系统中检查svchost.exe进程是否为病毒的方法步骤...
  10. 洛阳php编程培训,洛阳PHP开发培训分享提高PHP开发效率的四个编程习惯