thinkphp命名空间用法实例详解


Posted in PHP onDecember 30, 2015

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
PHP中的正规表达式(二)
Oct 09 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 PHP
PHP数据过滤的方法
Oct 30 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
PHP四种基本排序算法示例
Apr 09 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
详解PHP中的Traits
Jul 29 PHP
php猜单词游戏
Sep 29 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
详解PHP中的null合并运算符
Dec 30 #PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 #PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 #PHP
分享PHP守护进程类
Dec 30 #PHP
如何写php守护进程(Daemon)
Dec 30 #PHP
PHP汉字转换拼音的函数代码
Dec 30 #PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 #PHP
You might like
php PDO异常处理详解
2016/11/20 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
python和bash统计CPU利用率的方法
2015/07/10 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
购房个人委托书范本
2014/10/11 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers