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 相关文章推荐
基于mysql的bbs设计(四)
Oct 09 PHP
header()函数使用说明
Nov 23 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
php for 循环语句使用方法详细说明
May 09 PHP
解析php中const与define的应用区别
Jun 18 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python编写Windows Service服务程序
2018/01/04 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
详解python算法之冒泡排序
2019/03/05 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
单身旅行者的单身假期:Just You
2018/04/08 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
个人优缺点自我评价
2014/01/27 职场文书
安全生产目标责任书
2014/04/14 职场文书
爱国口号
2014/06/19 职场文书
环境科学专业求职信
2014/08/04 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers