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不用正则采集速度探究总结
Mar 24 PHP
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
php通过两层过滤获取留言内容的方法
Jul 11 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 PHP
PHP闭包定义与使用简单示例
Apr 13 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
php操作excel文件 基于phpexcel
2010/07/02 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
php 注释规范
2012/03/29 PHP
php发送与接收流文件的方法
2015/02/11 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
python中实现k-means聚类算法详解
2017/11/11 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
解决Python对齐文本字符串问题
2019/08/28 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
python热力图实现简单方法
2021/01/29 Python
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
建筑设计师岗位职责
2013/11/18 职场文书
英语求职信范文
2014/05/23 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
三年级学生期末评语
2014/12/26 职场文书