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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
smarty 缓存控制前的页面静态化原理
Mar 15 PHP
php常用Stream函数集介绍
Jun 24 PHP
关于php循环跳出的问题
Jul 01 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
php实现微信企业号支付个人的方法详解
Jul 26 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中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
简明json介绍
2008/09/28 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
python的scipy实现插值的示例代码
2019/11/12 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
精彩的大学生自我评价
2013/11/17 职场文书
信访维稳承诺书
2015/05/04 职场文书
国王的演讲观后感
2015/06/03 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers