广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >thinkphp插件钩子的实现机制是什么
  • 452
分享到

thinkphp插件钩子的实现机制是什么

2023-07-05 11:07:37 452人浏览 薄情痞子
摘要

这篇文章主要介绍“thinkPHP插件钩子的实现机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp插件钩子的实现机制是什么”文章能帮助大家解决问题。现在主流的cms或者blog

这篇文章主要介绍“thinkPHP插件钩子的实现机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp插件钩子的实现机制是什么”文章能帮助大家解决问题。

    现在主流的cms或者blog等系统中,都内置的有插件系统,但是层层深入、剖析实现的方式,其实都是最简单的钩子的复杂化的实现。

    前言

    钩子是插件执行的触发器;插件就像挂在钩子上的东西;插件只有实现相应钩子方法,并安装启用成功后才能执行。

    开发者也可以用hook('test')方法在控制器只加入钩子,让你的应用具有更好的扩展性;同时也可以模板里加入钩子{:hook('footer')};钩子也支持传入参数hook('footer',array('test'=>1));

    向系统暴露你的钩子,就是把你的钩子在相应的文件里列出来,系统会来检测。

    {:hooks('documentDetailAfter')}

    这个的意思就是:相当于在这边 打一个点 ,我们可以将插件挂载到那
    官方的说法是:文档末尾显示显示的 钩子
    意思就是说,在文档末尾的时候,会自动调用挂载在那个 钩子 上的插件

    举例说明

    php中所谓的钩子,其实就是一种事件驱动,主要分为‘注册事件’、‘触发事件’两步。所谓‘注册事件’,即目的是给未来可能发生的'事情'起一个名字,名字,可以用单例模式或者注册 为一个全局的变量,用的时候直接在对应的方法或者类再或者函数中插入这个变量即可;‘触发事件’,本质上就是在事件的全局变量中查询要触发的时间名称,然后找到注册号的类与方法,实例化运行。
    举个例子来说明一下。
    项目经理给我们了如下的需求:
    第一天:开发注册的功能。
    程序员巴拉巴拉,三下五除二就完成了。
    第二天:在注册前添加发送短信验证码的功能。
    程序员巴拉巴拉,三峡五除二就又完成了。
    第三天:注册完成之后,给用户添加相应的积分。
    程序员又开始巴拉巴拉ing……

        class ReGISter{        public function index(){                                                                    }    }

    这样一个人开发还好,多个人开发,势必会造成配合麻烦的问题,同时代码也会变得混乱。

    作为优秀程序员的我们,当然不容许我们程序中代码冗余、混乱的出现,于是我们把方法写成函数独立出来,方便调用与代码简介。于是形成如下代码:

        class Register{        public function index(){                         sendMsg($data);                                                sendIntegral($data);        }    }        function sendMsg($data){            }        function sendIntegral($data){            }

    但是我们想要把程序开元出去让更多的人参与,这种直接修改源码码的方式始终不是太好,这个时候,我们就可以使用钩子的方式,在注册成功前后注册两个钩子,我们只需要把钩子告诉开发人员就行了,这样他们不用改变源码码就可以轻易的进行拓展。

        class Register{        public function index(){                        //注册前钩子            Hook::run('registerBefore');                                    //注册后钩子            Hook::run('registerAfter');        }    }

    钩子的简单实现代码

    目录结构:../hook/Hook.php

    钩子核心类Hook.php:

        <?php        namespace hook;    class Hook{                static protected $hook = [];                        static public function add($name,$addons){            self::$hook[$name] = $addons;        }                static public function run($name){            if(isset(self::$hook[$name])){                $method = (new self::$hook[$name]());                   call_user_func([$method,$name]);            }                    }    }

    简单的插件demo:

        <?php    namespace addons\demo;    class Demo{        public function registerBefore(){            echo 'registerBefore'.'</br>';        }        public function registerAfter(){            echo 'registerAfter'.'</br>';        }        }

    插件实现的地方,即上文的注册的文件:

        <?php    namespace index\controller;    use hook\Hook;    class Index{        public function index(){            Hook::run('registerBefore');            echo '注册完成'.'</br>';            Hook::run('registerAfter');                    }    }

    入口文件index.php

        <?php    use index\controller\Index;    spl_autoload_register('autoload');    function autoload($name){        require_once('/'.str_replace('\\','/',$name).'.php');    }    //插件注册    hook\Hook::add('registerBefore','\\addons\\demo\\Demo');    hook\Hook::add('registerAfter','\\addons\\demo\\Demo');    //调用    $index = new Index();    $index->index();

    运行接口如下:

    •     registerBefore

    •     注册完成

    •     registerAfter

    如果要添加新的功能,程序员只要修改demo的插件就可,如果要拓展新的功能,只需要拓展registerBefore和registerAfter即可。 

    关于“thinkphp插件钩子的实现机制是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网PHP编程频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: thinkphp插件钩子的实现机制是什么

    本文链接: https://www.lsjlt.com/news/351390.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • thinkphp插件钩子的实现机制是什么
      这篇文章主要介绍“thinkphp插件钩子的实现机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp插件钩子的实现机制是什么”文章能帮助大家解决问题。现在主流的cms或者blog...
      99+
      2023-07-05
    • thinkphp(php)插件钩子(hooks)分析的简单实现机制
      目录前言举例说明钩子的简单实现代码钩子核心类Hook.php:简单的插件demo:插件实现的地方,即上文的注册的文件:入口文件index.php运行接口如下:总结现在主流的cms或者...
      99+
      2023-03-11
      thinkphp插件钩子(hooks)实现机制 php插件钩子 php hooks
    • ThinkPHP中钩子、行为扩展和插件机制的示例分析
      小编给大家分享一下ThinkPHP中钩子、行为扩展和插件机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!thinkphp是什么thinkphp属于一种...
      99+
      2023-06-06
    • JavaScript钩子机制原理是什么
      这篇文章主要讲解了“JavaScript钩子机制原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript钩子机制原理是什么”吧!问题是这...
      99+
      2022-10-19
    • thinkphp框架中钩子的配置调用方法是什么
      这篇文章主要讲解了“thinkphp框架中钩子的配置调用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp框架中钩子的配置调用方法是什么”吧!thinkphp的钩子行为...
      99+
      2023-06-21
    • PHP插件机制的原理是什么
      这篇文章主要讲解了“PHP插件机制的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP插件机制的原理是什么”吧!插件,亦即Plug-in,是指一类特定的功能模块(通常由第三方开发...
      99+
      2023-06-17
    • MFC键盘钩子事件的作用是什么
      MFC键盘钩子事件的作用是在Windows操作系统中拦截并处理键盘事件。通过使用MFC键盘钩子事件,可以监视和响应键盘输入,可以用于...
      99+
      2023-09-28
      MFC
    • C++ NDD源码的插件机制怎么实现
      本篇内容主要讲解“C++ NDD源码的插件机制怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++ NDD源码的插件机制怎么实现”吧!插件机制是一种框架,允许开发人员简单地在应用程序中添...
      99+
      2023-07-05
    • C++插件化NDD源码的插件机制实现解析
      目录NDD介绍 插件的优势NDD插件机制分析插件接口插件实现NDD插件加载过程插件机制是一种框架,允许开发人员简单地在应用程序中添加或扩展功能。它使广泛使用,因为它可以作为...
      99+
      2023-03-20
      c++插件化 c++ NDD源码插件机制
    • android中事件分发机制的实现原理是什么
      android中事件分发机制的实现原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。android中的事件处理,以及解决滑动冲突问题都离不开事件分发机制,androi...
      99+
      2023-05-30
      android
    • linux管道的实现机制是什么
      今天小编给大家分享一下linux管道的实现机制是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
      99+
      2023-02-07
      linux
    • java实现多态的机制是什么
      Java实现多态的机制是通过方法的重写和方法的动态绑定来实现的。方法的重写是指在继承关系中,子类可以重写(覆盖)父类的方法,使得子类...
      99+
      2023-09-22
      java
    • Ajax的内部实现机制是什么
      Ajax的内部实现机制主要涉及以下几个方面:1. XMLHttpRequest对象:Ajax通过XMLHttpRequest对象与服...
      99+
      2023-08-16
      Ajax
    • SimpleFramework组件的机制是什么
      这篇文章主要讲解了“SimpleFramework组件的机制是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SimpleFramework组件的机制是什么”吧!框架模式:Web应用中,无...
      99+
      2023-06-17
    • Mysql锁的内部实现机制是什么
      这篇“Mysql锁的内部实现机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mys...
      99+
      2022-10-19
    • C++虚函数的实现机制是什么
      这篇文章主要讲解了“C++虚函数的实现机制是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++虚函数的实现机制是什么”吧!目录虚函数简介虚函数表简介有继承关系的虚函数表剖析1、单继承无...
      99+
      2023-06-20
    • 计算机中插件指的是什么东西
      小编给大家分享一下计算机中插件指的是什么东西,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!插件是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独...
      99+
      2023-06-14
    • Vue实现父子组件传值的方法是什么
      这篇文章主要介绍了Vue实现父子组件传值的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue实现父子组件传值的方法是什么文章都会有所收获,下面我们一起来看看吧。父传子通过 props。props 就...
      99+
      2023-07-05
    • thinkphp实现分页功能的方法是什么
      这篇文章主要介绍“thinkphp实现分页功能的方法是什么”,在日常操作中,相信很多人在thinkphp实现分页功能的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp实现分页功能的方法...
      99+
      2023-07-05
    • java反射机制的实现原理是什么
      Java反射机制是指在运行状态中,对任意一个类都能够知道这个类的所有属性和方法,对任意一个对象都能够调用它的任意一个方法。实现Jav...
      99+
      2023-08-08
      java
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作