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和ACCESS写聊天室(七)
Oct 09 PHP
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
php preg_replace替换实例讲解
Nov 04 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
Laravel中10个有用的用法小结
May 06 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
初探PHP5
2006/10/09 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
JS中数组重排序方法
2016/11/11 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
Windows下安装python2和python3多版本教程
2017/03/30 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
竞选宣传委员演讲稿
2014/05/24 职场文书
环境卫生倡议书
2014/08/29 职场文书
活动总结新闻稿
2014/08/30 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技