【问题标题】:how to create a plugin system in php? [closed]如何在php中创建一个插件系统? [关闭]
【发布时间】:2014-02-10 14:37:45
【问题描述】:

我正在寻找构建类似于 Joomla 和 Wordpress 等各种著名 CMS 中的插件系统的方法。

我正在寻找一个 PHP 基础插件系统,以便轻松上手,并且不难理解和实现/集成。

这是我需要的更多详细信息: 我们已经构建了一个商业网络应用程序。在这个网络应用程序中,我们的客户要求我们添加使用基于插件的系统扩展它的功能,以便其他开发人员可以开发新功能并扩展应用程序。

系统应允许开发人员在一个或多个文件中构建特性/功能,然后压缩并安装它们。安装时,编程的功能应自动出现在核心应用程序中。

插件应该同时支持后端和前端接口。

如果不需要该功能,则只需删除插件,这些功能就会消失!

我已经在网上搜索了这个并且也厌倦了研究 WordPress 的插件系统,看看我是否可以集成类似的功能,但不幸的是它太复杂了,我无法理解,让我们尝试实现它!

TIA

杨洋

【问题讨论】:

  • 要求我们推荐或查找工具、库或最喜欢的场外资源的问题与 Stack Overflow 无关。
  • 同意题外话,但要回答这个问题,这样的系统并不存在。你正在寻找的是一个 PHP 开发者框架,试试 codeigniter 或类似的东西。
  • 构建一个。这种东西通常不是你可以从架子上摘下来的东西,因为它通常需要“钩子”或核心应用程序代码中的事件处理程序。一个基本的解决方案是在你的代码中实现一些钩子,并让你的插件将自定义函数附加到这些钩子上。然后用call_user_func()给他们打电话。
  • 我正在研究 phphooks 但几乎没有关于它的文档。
  • 我还发现 phplexus 使用它来构建基于插件的系统似乎很有趣! (code.google.com/p/phpplexus)

标签: php wordpress web-applications plugins


【解决方案1】:

对于这样的网站来说,这个问题太笼统了。创建插件系统有很多不同的方法,它们都有各自的优缺点。

有关 WordPress API 之类的工作原理的更多信息,请阅读publish-subscribe pattern。 WordPress 有一组 actionsfilters 在处理页面时调用它们,并且插件可以注册它们对接收有关这些事件的通知的兴趣。

Drupal 的插件架构类似,但它依赖于具有与它们交互的钩子相对应的特定名称的函数,并且 Drupal 建立一个插件在激活插件时支持哪些函数的索引。这往往更快,但不太灵活,并且以我们中一些人不习惯的方式耦合代码和数据库。

但是,要将其带回到一般答案的范围,您需要定义一组应用生成的信号/事件,以及让插件注册其对执行它们(操作)或修改默认操作的兴趣的方法(过滤器)。然后,您记录该 API,以便人们可以围绕它设计代码。其余的(如解压缩文件)只是实现细节。

【讨论】:

  • 感谢您的指点。你让我开始了。 :)
猜你喜欢
  • 2015-10-02
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
相关资源
最近更新 更多