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代码包装修正版
Mar 15 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
Feb 21 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
php实现读取超大文件的方法
Jul 28 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
PHP切割汉字的常用方法实例总结
Apr 27 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
详解php中流行的rpc框架
May 29 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实现的mongodb操作类
2015/05/28 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
Python基于select实现的socket服务器
2016/04/13 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python定位xpath 节点位置的方法
2019/08/27 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
和平主题的演讲稿
2014/01/12 职场文书
大四自我鉴定
2014/02/08 职场文书
新农村建设汇报材料
2014/08/15 职场文书
超市开店计划书
2014/09/15 职场文书