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中iconv函数使用方法
May 24 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
Jun 06 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
php绘制一条直线的方法
Jan 24 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
php加密解密字符串示例
Oct 13 PHP
PHP PDOStatement::debugDumpParams讲解
Jan 30 PHP
对laravel的session获取与存取方法详解
Oct 08 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
SSI指令
2006/11/25 PHP
PHP函数utf8转gb2312编码
2006/12/21 PHP
Cannot modify header information错误解决方法
2008/10/08 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
javascript 表单规则集合对象
2009/07/21 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
Python中for循环详解
2014/01/17 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
计算机系毕业生推荐信
2013/11/06 职场文书
共产党员承诺书
2014/03/25 职场文书
文明寝室标语
2014/06/13 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL