addons

The ThinkPHP5 Addons Package

安装

composer require yuninf/addons

配置

公共配置

'addons'=>[

// 可以定义多个钩子

'testhook'=>'test' // 键为钩子名称,用于在业务中自定义钩子处理,值为实现该钩子的插件,

// 多个插件可以用数组也可以用逗号分割

]

或者在application\extra目录中新建addons.php,内容为:

return [

// 可以定义多个钩子

'testhook'=>'test' // 键为钩子名称,用于在业务中自定义钩子处理,值为实现该钩子的插件,

// 多个插件可以用数组也可以用逗号分割

]

创建插件

创建的插件可以在view视图中使用,也可以在php业务中使用

安装完成后访问系统时会在项目根目录生成名为addons的目录,在该目录中创建需要的插件。

下面写一个例子:

创建test插件

在addons目录中创建test目录

创建钩子实现类

在test目录中创建Test.php类文件。注意:类文件首字母需大写

namespace addons\test;// 注意命名空间规范

use think\Addons;

/**

* 插件测试

*/

class Test extends Addons// 需继承think\addons\Addons类

{

// 该插件的基础信息

public $info = [

'name' => 'test',// 插件标识

'title' => '插件测试',// 插件名称

'description' => 'thinkph5插件测试',// 插件简介

'status' => 0,// 状态

'author' => 'yuninf',

'version' => '0.1'

];

/**

* 插件安装方法

* @return bool

*/

public function install()

{

return true;

}

/**

* 插件卸载方法

* @return bool

*/

public function uninstall()

{

return true;

}

/**

* 实现的testhook钩子方法

* @return mixed

*/

public function testhook($param)

{

// 调用钩子时候的参数信息

print_r($param);

// 当前插件的配置信息,配置信息存在当前目录的config.php文件中,见下方

print_r($this->getConfig());

// 可以返回模板,模板文件默认读取的为插件目录中的文件。模板名不能为空!

return $this->fetch('info');

}

}

创建插件配置文件

在test目录中创建config.php类文件,插件配置文件可以省略。

return [

'display' => [

'title' => '是否显示:',

'type' => 'radio',

'options' => [

'1' => '显示',

'0' => '不显示'

],

'value' => '1'

]

];

创建钩子模板文件

在test目录中创建info.html模板文件,钩子在使用fetch方法时对应的模板文件。

hello tpl

如果插件中需要有链接或提交数据的业务,可以在插件中创建controller业务文件,

要访问插件中的controller时使用addon_url生成url链接。

如下:

link test

格式为:

test为插件名,Action为controller中的类名,link为controller中的方法

创建插件的controller文件

在test目录中创建controller目录,在controller目录中创建Action.php文件

controller类的用法与tp5中的controller一致

namespace addons\test\controller;

class Action

{

public function link()

{

echo 'hello link';

}

}

如果需要使用view模板则需要继承\think\addons\Base类

模板文件所在位置为插件目录的view中,规则与模块中的view规则一致

namespace addons\test\controller;

use think\addons\Base;

class Action extends Base

{

public function link()

{

return $this->fetch();

}

}

使用钩子

创建好插件后就可以在正常业务中使用该插件中的钩子了

使用钩子的时候第二个参数可以省略

模板中使用钩子

{:hook('testhook', ['id'=>1])}

php业务中使用

只要是thinkphp5正常流程中的任意位置均可以使用

hook('testhook', ['id'=>1])

php使用addons,GitHub - yuninf/tp5-addons: ThinkPHP addons autoload相关推荐

  1. PHP TP5框架 安装运行 Warning: require(E:\phpstudy_pro\WWW\TP5\tp5\public/../thinkphp/base.php): failed to

    创建一个新的项目:进入项目的根目录执行 git 命令: 先执行 git clone -b 5.1 https://git.coding.net/liu21st/thinkphp5.git tp5 进入 ...

  2. addons.php,GitHub - zz-studio/think-addons: The ThinkPHP6 Addons Package

    think-addons The ThinkPHP 6 Addons Package 安装 composer require zzstudio/think-addons 配置 生成配置 系统安装后会自 ...

  3. tp5 php post方式提交无提示,使用TP5框架时,代码提交到GitHub,无法提交thinkphp核心库...

    1.首先,我们要先将.gitignore中的thinkphp这个目录去掉,表示不忽略这个文件夹(其他vendor等文件夹也是一样操作): 这个时候我们提交会发现thinkphp文件夹上去了,但是文件夹 ...

  4. app 应用商店系统php,GitHub - ChhXin/appstore-admin: 基于ThinkPHP的应用商店后台管理系统...

    数据库大作业 简介 ThinkPHP 是一个免费开源的,快速.简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而 ...

  5. php7cms框架,GitHub - itsky71/itskycms: 基于ThinkPHP框架的一个CMS系统

    ITskyCMS简介 ITskyCMS 是一款完全开源免费的PHP+MYSQL系统.核心采用了Thinkphp框架,同时也作为开源软件发布.集众多开源项目于一身的特点,使本系统从安全,效率,易用及可扩 ...

  6. php嵌套序列化输出tp5.0,ThinkPHP v5.0.x 反序列化利用链挖掘

    前言 前几天审计某cms基于ThinkPHP5.0.24开发,反序列化没有可以较好的利用链,这里分享下挖掘ThinkPHP5.0.24反序列化利用链过程.该POP实现任意文件内容写入,达到getshe ...

  7. php模拟微信公众号服务器,GitHub - Lin07ux/wechat-third-server: 使用 ThinkPHP、Vue 搭建一个带有后台的微信公众号第三方服务器的基础模板...

    微信公众号第三方服务器 该项目用于实现一个最基本的微信公众号第三方服务器开发的模板. 基于: ThinkPHP v3.2.3 Vue v2.2.0 Vue-resource v1.0.3 功能 微信用 ...

  8. 微信公众号服务器页面模板,GitHub - devsnippet/wechat-third-server: 使用 ThinkPHP、Vue 搭建一个带有后台的微信公众号第三方服务器的基础模板...

    微信公众号第三方服务器 该项目用于实现一个最基本的微信公众号第三方服务器开发的模板. 基于: ThinkPHP v3.2.3 Vue v2.2.0 Vue-resource v1.0.3 功能 微信用 ...

  9. Node.js 调用 C++ 方法 / C++ Addons 详解

    最近开发涉及到了一些Node.js调用C++的地方,于是网上搜了一下,发现网上好多文章都是比较片面的东西,没法直接使用.于是花点时间总结一下. Android开发中Java 调用C++的部分叫JNI, ...

最新文章

  1. 输出链表倒数第K个节点
  2. 同步文件,不需要密码
  3. FormView里用FindControl找不到控件的解决方法
  4. html页面渲染vue组件,Vue组件页面渲染的基本流程
  5. Go map[int64]int64 写入 redis 占用多少内存
  6. 微课|中学生可以这样学Python(例8.23):快速排序算法
  7. json规范,平时不注意的特殊符号
  8. 科来网络全流量安全分析系统[Study]
  9. NMOS与PMOS的区分及使用
  10. 制作u盘winpe启动盘_U盘PE启动盘制作方法
  11. 冰点还原6.61 For Win2003 打造全过程
  12. 数字后端——信号完整性分析
  13. 博通蓝牙linux,好消息,使用Broadcom蓝牙的有福了,新驱动,新选择,BrcmPatchRAM...
  14. 齐次Markov链的遍历性判定
  15. DIM的全称及本来意义
  16. 关于功耗芯片那些事(四)
  17. fitbit手表中文说明书_入侵Fitbit-为Twitter DM模拟寻呼机!
  18. 进程process和线程thread应用和区别——Python学习笔记12
  19. 高效的稳定性测试工具Fastbot的使用
  20. 华为人又出事了,“企业文化”还有多少文章可作?

热门文章

  1. 史上最全Maven教程(二)
  2. 偏最小二乘回归(三):身体特征与体能训练结果的 案例分析
  3. 计算机二级报名时间2020年3月山西,2020年3月山西计算机二级报名及考试时间
  4. neo4j安装详细步骤(小白版)
  5. 在WPF里使用指纹认证(一、安装SDK)
  6. 【Java接口】限制App登录次数
  7. 数据ETL——使用R语言对身份证进行校验,排序筛选等操作
  8. 工作必备Git保姆级教学
  9. python数据模型和算法_万字案例 | 用Python建立客户流失预测模型(含源数据+代码)...
  10. 为痉挛性斜颈的患者敲响警钟,必看文章!