Thinkphp 框架扩展之类库扩展操作详解


Posted in PHP onApril 23, 2020

本文实例讲述了Thinkphp 框架扩展之类库扩展操作。分享给大家供大家参考,具体如下:

类库扩展

ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。

公共类库

公共类库通常是指ThinkPHP/Library目录下面的类库,例如:

Think目录:系统核心类库
Org目录:第三方公共类库

这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义。 你可以在Org/Util/目录下面添加一个Image.class.php 文件,然后添加命名空间如下:

namespace Org\Util;
class Image {
}

这样,就可以用下面的方式直接实例化Image类了:

$image = new \Org\Util\Image;

除了这些目录之外,你完全可以在ThinkPHP/Library目录下面添加自己的类库目录,例如,我们添加一个Com目录用于企业类库扩展:

Com\Sina\App类(位于Com/Sina/App.class.php )

namespace Com\Sina;
class App {
}

Com\Sina\Rank类(位于Com/Sina/Rank.class.php)

namespace Com\Sina;
class Rank {
}

公共类库除了在系统的Library目录之外,还可以自定义其他的命名空间,我们只需要注册一个新的命名空间,在应用或者模块配置文件中添加下面的设置参数:

'AUTOLOAD_NAMESPACE' => array(
  'Lib'   => APP_PATH.'Lib',
)

我们在应用目录下面创建了一个Lib目录用于放置公共的Lib扩展,如果我们要把上面两个类库放到Lib\Sina目录下面,只需要调整为:

Lib\Sina\App类(位于Lib/Sina/App.class.php )

namespace Lib\Sina;
class App {
}

Lib\Sina\Rank类(位于Lib/Sina/Rank.class.php)

namespace Lib\Sina;
class Rank {
}

如果你的类库没有采用命名空间的话,需要使用import方法先加载类库文件,然后再进行实例化,例如: 我们定义了一个Counter类(位于Com/Sina/Util/Counter.class.php):

class Counter {
}

在使用的时候,需要按下面方式调用:

import('Com.Sina.Util.Couter');
$object = new \Counter();

应用类库

应用类库通常是在应用或者模块目录下面的类库,应用类库的命名空间一般就是模块的名称为根命名空间,例如: Home\Model\UserModel类(位于Application\Home\Model)

namespace Home\Model;
use Think\Model;
class UserModel extends Model{
}

Common\Util\Pay类(位于Application\Common\Util)

namespace Common\Util;
class Pay {
}

Admin\Api\UserApi类(位于Application\Admin\Api)

namespace Admin\Api;
use Think\Model;
class UserApi extends Model{
}

记住一个原则,命名空间的路径和实际的文件路径对应的话 就可以实现直接实例化的时候自动加载。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php生成缩略图的类代码
Oct 02 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
PHP中如何调用webservice的实例参考
Apr 25 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
php实现smarty模板无限极分类的方法
Dec 07 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 #PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 #PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 #PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 #PHP
php模拟实现斗地主发牌
Apr 22 #PHP
PHP实现随机发扑克牌
Apr 22 #PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 #PHP
You might like
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
理解Javascript_03_javascript全局观
2010/10/11 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
微信小程序日历效果
2018/12/29 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
会计工作决心书
2014/03/11 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
党校党性分析材料
2014/12/19 职场文书
《所见》教学反思
2016/02/23 职场文书
调研报告的主要写法
2019/04/18 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
python分分钟绘制精美地图海报
2022/02/15 Python
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS