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 09 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
详解Yii2.0 rules验证规则集合
Mar 21 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 PHP
php判断IP地址是否在多个IP段内
Aug 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
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
js简单抽奖代码
2015/01/16 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
Python分析学校四六级过关情况
2017/11/22 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
汽修专业学生自我鉴定
2013/11/16 职场文书
自主招生自荐信
2013/12/08 职场文书
党支部书记先进事迹
2014/01/17 职场文书
保证书格式范文
2014/04/28 职场文书
学雷锋宣传标语
2014/06/25 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
复兴之路展览观后感
2015/06/02 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书