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—命名空间相关推荐
- thinkphp学习笔记10—看不懂的路由规则
原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...
- thinkphp学习笔记7—多层MVC
原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...
- ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式
/*** ThinkPHP version 3.1.3*/ ThinkPHP ( 官方网站:http://www.thinkphp.cn/ ) 目前最新版本是 3.2.2,它要求 PHP 的版本高于 ...
- ThinkPHP学习笔记之Model操作
2019独角兽企业重金招聘Python工程师标准>>> 1. 3种实例化model模型方法 a) new 命名空间GoodsModel(); b) D(["模型标志Goo ...
- thinkphp学习笔记13-15集
13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...
- ThinkPHP学习笔记 事务处理
为什么80%的码农都做不了架构师?>>> 事务处理是数据库数据处理中经常用到的一个功能,特别是商务之类的应用,比如a给b打了钱,数据库中a的钱数应该减少,b的钱数应该增加, 若 ...
- thinkPHP学习笔记(2)
1.调试模式 设置调试模式部分代码如下: 1 <?php 2 define('APP_DEBUG',TRUE); // 开启调试模式 常量定义代码 3 require '/ThinkPHP框架所 ...
- thinkPHP学习笔记
(1)thinkphp中方法的调用 1.调用当前控制器中的方法有以下三种 class Index{public function index() {return "当前控制器中的index方 ...
- iOS学习笔记3 - 命名空间
首先补充说明一下,这个系列不是教程,所以除了很可能会出错之外,而且不会按什么由浅入深的顺序来写.写什么主题完全看心情. 从C#转到Objective-c开发之后,会产生这么一个疑问: Objectiv ...
最新文章
- SQL语句中exists和in的区别
- 单IP无TMG拓扑Lync Server 2013:活动目录
- 【文献学习+方便自己使用】二阶一致性理论
- Mozilla Firefox 66 将使用更少的内存,提高扩展性能
- java 得到bean的属性_获取javaBean所有属性及类型.doc
- stat---文件状态信息结构体
- 13. PHP 表数据入口(table data gateway)
- 力软敏捷开发框架源码7.0.6旗舰版
- 基于阿里云服务器使用宝塔面板进行Hexo建站
- java docx4j 合并word_使用docx4j进行docx文档合并。
- python制作动态时钟_python实现简易动态时钟
- android 手机ssh客户端,android手机ssh客户端ConnectBot
- 数据挖掘:数据清洗——缺失值处理
- LeetCode上的各种股票最大收益
- STL之vector的push_back过程详解
- html纵向广告滚动,jquery广告滚动 jquery 实现文字左右滚动
- 法卡斯定理(Fakars' Lemma)
- 使用gulp编译 sass和less
- CQL 函数及多深度关系节点
- WPF编程,使用字体图标的一种方法。
热门文章
- onvif协议服务器端口,通过onvif协议接入海康、大华NVR步骤
- websocket中发生数据丢失_node.js – Websocket传输可靠性(重新连接期间Socket.io数据丢失)...
- javascript promise
- AudioScheduledSourceNode
- javascript window.history
- 26 Socket Addressing and Client Socket Programming
- echarts map
- R语言分类算法之集成学习(Bootstrap Aggregating)
- 如何查html病毒svchost.exe,小编教你在Win7系统中检查svchost.exe进程是否为病毒的方法步骤...
- 洛阳php编程培训,洛阳PHP开发培训分享提高PHP开发效率的四个编程习惯