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基础知识:控制结构
Dec 13 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
Symfony控制层深入详解
Mar 17 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
laravel自定义分页效果
Jul 23 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 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
php设置session值和cookies的学习示例
2014/03/21 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
python读取目录下最新的文件夹方法
2018/12/24 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
PHP面试题-$message和$$message的区别
2015/12/08 面试题
广州盈通面试题
2015/12/05 面试题
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
广告学专业应届生求职信
2013/10/01 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
十周年庆典策划方案
2014/06/03 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
2014年商场工作总结
2014/11/22 职场文书
英文升职感谢信
2015/01/23 职场文书
承兑汇票延期证明
2015/06/23 职场文书
远程教育学习心得体会
2016/01/23 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript