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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 PHP
php实现天干地支计算器示例
Mar 14 PHP
php操作memcache缓存方法分享
Jun 03 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
基于laravel where的高级使用方法
Oct 10 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP 命名空间实例说明
2011/01/27 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
js更优雅的兼容
2010/08/12 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
JS求平均值的小例子
2013/11/29 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python能做什么 python的含义
2019/10/12 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
用Python制作音乐海报
2021/01/26 Python
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
销售经理竞聘书
2014/03/31 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
经理助理岗位职责
2015/02/02 职场文书
公务员处分决定书
2015/06/25 职场文书
Pygame Time时间控制的具体使用详解
2021/11/17 Python