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实现的MySQL通用查询程序
Mar 11 PHP
UCenter Home二次开发指南
May 28 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
Yii2框架控制器、路由、Url生成操作示例
May 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
PHP生成带有雪花背景的验证码
2008/09/28 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Python下Fabric的简单部署方法
2015/07/14 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
TensorFlow如何实现反向传播
2018/02/06 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
公司财务自我评价分享
2013/12/17 职场文书
秋季运动会表扬稿
2014/01/16 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
我的1919观后感
2015/06/03 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
通过Python把学姐照片做成拼图游戏
2022/02/15 Python