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去除重复字的实现代码
Sep 16 PHP
php无限极分类实现的两种解决方法
Apr 28 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
php实现的顺序线性表示例
May 04 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 PHP
php png失真的原因及解决办法
Oct 24 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中memcache的应用
2013/06/18 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
php的常量和变量实例详解
2017/06/27 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
13个PHP函数超实用
2015/10/21 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
Python实现异步IO的示例
2020/11/05 Python
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android