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 相关文章推荐
建立文件交换功能的脚本(二)
Oct 09 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
Apr 09 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
windows下apache搭建php开发环境
Aug 27 PHP
php实现三级级联下拉框
Apr 17 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
smarty实现多级分类的方法
2014/12/05 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
javascript 函数调用的对象和方法
2010/07/01 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
python+opencv实现动态物体识别
2018/01/09 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
2014年情人节活动方案
2014/02/16 职场文书
超市开学活动方案
2014/03/01 职场文书
工程项目经理任命书
2014/06/05 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
活动宣传稿范文
2015/07/23 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers