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 jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
Yii框架组件和事件行为管理详解
May 20 PHP
制作个性化的WordPress登陆界面的实例教程
May 21 PHP
PHP静态成员变量
Feb 14 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP实现今天是星期几的几种写法
2013/09/26 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
详解python之配置日志的几种方式
2017/05/22 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
2014年超市工作总结
2014/11/19 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers