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 相关文章推荐
基于mysql的bbs设计(一)
Oct 09 PHP
?繁体转换的class
Oct 09 PHP
上传多个文件的PHP脚本
Nov 26 PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
实例讲解php数据访问
May 09 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP实现计算器小功能
Aug 28 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 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二分法在IP地址查询中的应用
2008/08/12 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
PHP线程的内存回收问题
2016/07/08 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
JS调用CS里的带参方法实例
2013/08/01 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
Python 的描述符 descriptor详解
2016/02/27 Python
python使用psutil模块获取系统状态
2016/08/27 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
python生成并处理uuid的实现方式
2020/03/03 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
django创建css文件夹的具体方法
2020/07/31 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
广告学专业推荐信范文
2013/11/23 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
派出所所长先进事迹
2014/05/19 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
在校证明模板
2015/06/17 职场文书