Thinkphp 框架扩展之类库扩展操作解析

发布时间 - 2020-06-09 00:00:00    点击率:

thinkphp 框架扩展之类库扩展操作详解

这篇文章主要介绍了Thinkphp 框架扩展之类库扩展操作,结合实例形式分析了Thinkphp 类库扩展的相关原理、实现方法与操作注意事项,需要的朋友可以参考下

本文实例讲述了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{
}

记住一个原则,命名空间的路径和实际的文件路径对应的话 就可以实现直接实例化的时候自动加载。

推荐教程:《PHP视频教程》


# php  # thinkphp  # 命名空间  # class  # Namespace  # 类库  # 要把  # 只需要  # 自动加载  # 自己的  # 都是  # 是在  # 还可以  # 你可以  # 是指 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: EditPlus中的正则表达式实战(6)  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  如何挑选最适合建站的高性能VPS主机?  Laravel如何使用模型观察者?(Observer代码示例)  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  JS碰撞运动实现方法详解  Laravel如何使用Gate和Policy进行授权?(权限控制)  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  如何在云主机快速搭建网站站点?  详解Android——蓝牙技术 带你实现终端间数据传输  如何用景安虚拟主机手机版绑定域名建站?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  详解jQuery停止动画——stop()方法的使用  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel观察者模式如何使用_Laravel Model Observer配置  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel如何实现API资源集合?(Resource Collection教程)  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何创建自定义Facades?(详细步骤)  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Bootstrap整体框架之JavaScript插件架构  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  大型企业网站制作流程,做网站需要注册公司吗?  青岛网站建设如何选择本地服务器?  详解jQuery中基本的动画方法  如何快速搭建支持数据库操作的智能建站平台?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  打造顶配客厅影院,这份100寸电视推荐名单请查收  Python3.6正式版新特性预览  开心动漫网站制作软件下载,十分开心动画为何停播?  新三国志曹操传主线渭水交兵攻略  php 三元运算符实例详细介绍  Laravel如何使用Vite进行前端资源打包?(配置示例)  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何快速选择适合个人网站的云服务器配置?  如何在万网主机上快速搭建网站?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  浅析上传头像示例及其注意事项  Laravel如何为API生成Swagger或OpenAPI文档