# 插件的安装与卸载
> 插件的安装与卸载,这是插件中的核心。也正是因为插件的安装与卸载,才能使插件技术在系统功能扩展上十分的灵活。
> 每一个插件都至少有两个状态`安装`和`未安装`,所以咱们在使用时,需要去标记插件的安装状态,在标记时,方式有多种,可以根据自己的需求灵活处理。
![](https://box.kancloud.cn/e529225f48b0b5efcbbf8a9904e88530_1616x543.png)
## 插件状态的标记方式:
1. 直接将插件状态写入数据库
> 思路1:将安装成功的插件信息写入数据库,如未安装的不写入
> 思路2:将所有的插件写入数据库,插件状态使用一个字段进行标识
2. 不使用数据库-通过文件进行标记
> 思路1:将安装成功的插件信息写入到该插件目录下的一个文件中,也可以使用一个文件进行标记。
> 思路2:直接在插件基本信息中进行标记(灵活度不高,不建义这样使用)。
## 通过文件进行标记
> 在这里,咱们直接在安装成功的插件目录下,生成一个配置文件,里面含有插件的基本信息,还有咱们需要的其它的配置信息(如:插件菜单等)
> 在这里,就直接通过写入文件的方式来实现。由于原插件扩展包中,没有生成文件的方法,所以在这里,同样在扩展包函数文件中,新增一个创建文件的函数。
创建文件的函数:
~~~
/**
* 生成插件配置文件
* @param array $config 配置信息
* @param string $name 配置文件名
* @return array
*/
function create_config($config,$name="config.php"){
$config_file=ADDON_PATH.$config['name'].DS.$name;
if(is_file($config_file) && file_exists($config_file)){
return false;
}
$config=var_export($config, true);
$content =<<<EOT
<?php
return {$config}
EOT;
$result=file_put_contents($config_file,$content);
if($result===false){
return false;
}
return true;
}
~~~
## 插件安装
> 插件安装其实就是生成标识文件,在这里咱们直接在安装插件的根目录下生成一个配置文件,文件内容咱们根据需求,自行定义。
> 在这要注意,安装插件可能不仅仅是生成配置文件,还要处理一些其它的业务逻辑。比如生成数据表、向表中添加字段等等。这个主要是根据咱们的插件功能和需求来定。
## 插件卸载
> 插件卸载,就是要删除标识文件,同时还要移除其它的业务逻辑。但是在实际开发过程中,在删除插件时,为了避免风险,部分内容可能需要手动删除(如:数据库)。
- 课程介绍
- thinkphp5.0
- 安装
- 开发规范
- 目录结构
- 配置参数
- 系统常量
- tp5自带的函数
- 助手函数
- 扩展类库
- 基本类库
- Workerman
- think-queue
- 验证码
- 图片
- 权限认证
- 课前准备
- 数据库设计
- 模块设计
- 管理员管理
- 添加
- 编辑
- 删除和批量删除
- 列表页
- 实列
- 权限管理
- 操作日志
- 基于行为的日记录
- 行为日志的扩展
- 助手类库
- 自建函数
- 将数组转成uri字符串
- 获取当前服务器的IP
- curl-post
- 截取文字中间的字符串
- 检查中文姓名
- 省市区分别截取
- 抽奖概率问题
- 短信邮箱模板替换
- 生成csv
- PHP 图片转base64
- 银行卡验证
- json返回接口封装
- 无限极分类
- 病毒
- xml和数组互转
- xml转成数组
- 数组转xml
- tp控制器相关
- 获取thinkph5下控制器和方法名
- 后台查询的简单封装
- 网址信息
- 获取网站logo
- 判断url是否存在
- 获取title
- 判断远程文件是否存在
- 获取页面所有链接
- 过滤
- 截取
- 时间
- 获取服务器信息
- 根据id生成唯一邀请码
- 随机颜色
- 数组字符串互换
- 创建多级目录
- 懒人查询
- 时间和时间戳转换
- 房间id生菜
- 获取需要的数组元素
- 文件和文件夹
- 文件类库
- 文件夹
- 七牛云
- 七牛云运用场景
- 七牛云使用实例
- 邮箱
- 邮箱验证
- 邮箱发送
- 数据库
- 数据库在thinkphp中的补充方法
- 备份和安全
- sql执行
- 数据库备份2
- 时间日历
- 时间格式化
- 日历
- 图片相关
- 自动获取图片主题颜色
- 获取html中的图片路径
- 获取图片场景
- 获取图片实践
- 图片处理类
- 图片处理场景
- 图片处理实践
- 数据验证分析
- 身份证相关
- 新闻
- 自建类库
- 简易分类库
- php 压缩CSS代码
- 身份证
- 分词和抽词
- 分词应用场景
- 分词实践
- 中文转拼音
- 中文转拼音场景
- 中文转拼音实践
- 二维码操作
- 二维码场景
- 二维码实践
- 短地址
- PHPWord
- 插件化
- 插件扩展库
- 插件列表
- 插件安装和卸载
- 插件实践
- 插件的离线安装
- 计划任务
- 计划任务安装
- 计划任务实践
- 定时器
- 注册登录
- 普通登录注册
- 第三方登录注册
- jwt接口登录注册
- 短信
- 飞鸽短信
- 阿里短信
- 消息队列
- 网站地图
- 全站静态化
- 缓存
- 文件导出
- PDF生成
- phpword
- PHPExcel
- 其他类库
- 百度
- 百度语音
- 快递
- 跨域问题
- 宝塔
- 搜索记录