很多的系统一开始只能提供基础的主干部分功能,对于后续的迭代和更新如果非主干又个性的功能,建议采用插件的系统进行开发,这样方便随时启用或者停用不同的插件功能。

今天我们主要讲讲PHP开发插件机制的设计与开发,用一个市场上大家能下载的开源的商城系统为例。大家可以先点击 下载

这个系统的插件机制最主要的函数库是WSTMart/vendor下的函数库,一些风格位置和函数的使用都在里边去定义,这一部分用户可以根据实际情况去进行扩展。下边我们物流插件(快递100)为例子讲解如何进行插件开发:

1.准备开发目录,如下:

1)controller--插件控制器目录

2)model---插件控模型目录

3)view---插件视图文件目录

4)config.php---插件配置目录,这里的配置会影响到管理后台“扩展管理-插件管理”里的插件描述,例如:

其中type类型有hidden(隐藏域)、text(输入框)、radio(单选框)、textarea(文本域)、tips(提示信息)、checkbox(复选框)-需搭配options使用、group(分页Tab)-需搭配options几种类型。开发者在这里定义了不同的type.在插件设置界面就会生成不同的元素。

5)Kuaidi.php---插件主入口,凡是在插件里用到的钩子,都需要在该文件中定义。例如该插件会在钩子adminDocumentOrderView处执行,那么就需要在该文件内定义这个钩子的函数:

作为一个插件主入口必须的函数有install(插件安装时执行)、uninstall(插件卸载时执行)、enable(插件启用时执行)、disable(插件禁用时执行)、saveConfig(保存插件设置时执行),这些是必须的函数。当用户在扩展管理中安装、卸载,启用,禁用和保存插件设置时就需要调用这里的函数。

6)install.sql---安装插件时需要执行的sql。

7)uninstall.sql---卸载插件时需要执行的sql。

2.在插件主入口创建插件必备的函数install(插件安装时执行)、uninstall(插件卸载时执行)、enable(插件启用时执行)、disable(插件禁用时执行)、saveConfig(保存插件设置时执行)以及钩子需要执行的函数。

3.在model中定义插件的业务处理函数,如图:

其中install和uninstall是必须的插件业务处理动作。一个插件会监听那些钩子,就需要在install里进行定义,如图$hooks中数组中的内容“adminDocumentOrderView”,表示钩子“adminDocumentOrderView”会被该快递插件监听。当用户安装插件之后,我们就在“拓展管理-扩展管理-钩子管理”中查看到改钩子的监听插件情况:

当用户卸载了插件之后,此处也会看到这个插件名称。

4.插件请求。如果和钩子监听无关的跳转或者请求,则用户可以像一般的做法一样,在controller里定义控制器,然后调用model进行处理,最后返回到view里的视图去显示。

5.视图参数定义。有时候我们需要在插件里引用到外部的布局,例如引用商品相应页的布局,那么我们就需要插件系统帮我们预定义一套参数,这样方便我们引用。注意:系统之所以要预定义一套参数,主要是为了前台风格切换的时候不至于因为插件里写死了风格路径导致页面错位。具体的参数定义开发者可以参考文件vendor/5ini99/think-addons/src/Controller.php中的initLayout函数,也可以自行对此文件进行修改-不过为了兼容后续的升级,最好开发者反馈给官方进行修改。有了官方的地方,开发者就可以在前台类似这样的引用了:

这样就完成了PHP对插件这一块的简单的开发,如果大家有更好的方法,欢迎留言或者私信聊聊。

干货!PHP开发插件机制的设计与开发 以Thinkphp多用户商城系统为例相关推荐

  1. 开发B2B2C多用户商城系统需要多少钱

    企业开发一个多用户商城系统目的是为了实现业务营销模式的多样化,搭建多店铺商城系统过程所需要花费的预算.人力.周期当然是许多B2B2C电商企业所关心的问题,国内知名多用户系统开发服务商商淘软件将在这里为 ...

  2. 洋洋洒洒688字带你彻底吃透Zuul的插件机制及定制化开发

    Zuul的插件机制及定制化开发 Zuul的另外一个重要机制就是Filter动态加载机制.Zuul支持的动态Filter由Groovy代码编写,动态管理Groovy的File目录变更并动态编译和加载. ...

  3. php开发架构设计,基于php的快速搭建SPA开发架构的框架设计与开发

    程序 员之 家 基于 P h p 的快速搭建 S PA 开发架构的框架设计与 开发 ?叶松鑫 马 灏辉 何子 安 彭吉琪 黄钰冰 (佛 山科学技 术学 院 电子 信息工程 学 院 广东 佛 山 528 ...

  4. ttshop是PHP开发的,讯想-B2B2C多用户商城系统

    讯想B2B2C多用户商城系统 支持"商家入驻+平台自营"打造企业级的"京东商城"! 什么是讯想B2B2C多用户商城系统? 讯想B2B2C多用户商城是一款基于移动 ...

  5. 多用户商城系统哪家好?专注大型商城开发

    多用户商城系统哪家好,近期有不少朋友在选型的时候问我这个问题.作为专注大型商城开发十几年开发老兵告知你,在满足大部分功能需求的前提下,注意产品迭代速度.二开难易度.维护成本高低.用户口碑这几个部分,对 ...

  6. 小象电商是采用JAVA开发的B2B2C多用户商城系统。

    简介: 小象电商是采用JAVA开发的B2B2C多用户商城系统.以"平台自营+多商户入驻"为主要经营模式,可快速帮客户打造类似"京东"一样的自营+招商入驻的经营模 ...

  7. 开发一个多用户商城系统多少钱

    在这个无论什么行业竞争都是异常激烈的年代里,多用户商城系统建设竞争正风生水起.我们都知道,网上商城网站建设公司之间竞争越激烈,对于想要做一个网上商城网站的企业来说是一个好处.因为这样一来,价格战策略就 ...

  8. 多用户商城系统流程设计和流程图,以及退换货流程图说明

    多用户商城系统流程设计和流程图 多用户商城系统订单退换货流程图:

  9. PHP商城缺点,多用户商城系统php语言开发的优劣?

    市面上的多用户商城系统具有不同的特性,这是因为它们使用的开发语言不同所导致的.如今最常用的开发语言有PHP.Java..net,它们开发的商城系统各有其优劣.今天HiShop小编就来为大家介绍一下多用 ...

最新文章

  1. Spring Boot与ActiveMQ的集成
  2. 统计学习方法笔记 -- 概论
  3. c++一日一练:让标准的输入输出流关联一个缓冲区
  4. android语言 选择题,Android N以编程方式更改语言
  5. 《HTML5高级程序设计》知识点概要(不涉及详细语法)
  6. Kinect v2.0 for windows开发环境说明
  7. open live writer
  8. 【Boost】boost库asio详解5——resolver与endpoint使用说明
  9. CG-CTF-Web-文件包含
  10. 它在计算机房的旁边英文,计算机房设备搬迁协议 (中英文)
  11. 源码编译安装PHP7.4,解决openssl,libxml2,libcurl依赖的问题
  12. bat 调用class文件_[Golang实现JVM第五篇]静态方法调用的实现
  13. Powershell 查询SQL数据库资料
  14. python能做什么工作-Python学完工作不好找?看看数据分析可视化都可以做什么
  15. 面试题1,值传递和参数传递
  16. 万兆网口和千兆网口区别_万兆网卡的安装以及注意事项
  17. do while 执行1次
  18. 验证集精度高于训练集精度的原因分析
  19. K2P路由器刷机和拨号上网
  20. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (5) LPC Parameter Encode 模块

热门文章

  1. Ubuntu 18.04 添加自定义app到桌面和搜索栏
  2. pandas镜像安装_geopandas安装心得(win10)
  3. Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependen
  4. 服务器运行多个安卓系统,一台服务器可以做几个云手机
  5. 记录一下zSpace
  6. 【CVPR2017周博磊】Network Dissection: Quantifying Interpretability of Deep Visual Representations
  7. 车辆识别——yolov5 + DeepSort_Pytorch
  8. Sony IMX118sensor驱动与视频数据处理
  9. c语言学习记录—有趣代码1
  10. 全连接、卷积、循环神经网络介绍