【问题标题】:How to make plugin-like web application with PHP?如何使用 PHP 制作类似插件的 Web 应用程序?
【发布时间】:2011-10-23 03:27:18
【问题描述】:

堆栈溢出!

我正在寻找一种使用 PHP 制作类似插件(我不知道如何称呼它)的 Web 应用程序的方法。我的意思是我想创建一个系统,用户可以通过浏览器添加/删除插件(扩展,如果你喜欢的话)(而不是通过向配置添加一些代码)。在我看来,WordPress 就是一个很好的例子。最终用户可以简单地安装任何类型的插件,并且几乎什么都不做,它们就可以按预期工作,而且通常需要更改很多设置等等。

另外,我想让它尽可能可用。我的意思是插件可以使用其他插件的一部分,因此重写的代码更少。例如,有用于授权/身份验证的插件以及与用户相关的所有其他内容。然后,有用于博客的插件。博客,当然需要前面提到的,对吧?所以它只是使用前面提到的插件来工作。我知道会有很多依赖等等......但这只是正常的。 :)

我的问题是……我可以用什么技术来完成它?这种系统的优点和缺点是什么?我认为它会慢一些,并且不适合像 Facebook 这样的非常大的网站(好吧,这太大了),但对于简单的博客、投资组合,任何东西都可以!

我听说过事件驱动编程(或基于事件的编程),我也读过关于它的文章on Wikipedia,但仍然......我很困惑,甚至不确定是不是这样我正在寻找的。​​p>

感谢您阅读本文。给我一些答案,如果可能的话。 :D

【问题讨论】:

    标签: php plugins frameworks event-based-programming


    【解决方案1】:

    有多个问题需要考虑。正如您所提到的,插件系统依赖于向应用程序注册扩展,而扩展本身需要一种连接到主应用程序的方法。

    尽管存在所有缺点,但 Wordpress 有一个非常可行的方法。它uses "hooks" 用于连接插件。这基本上是一个回调系统,或多或少也可以等同于“事件驱动”。从根本上说,主应用程序执行以下操作:

    foreach ($callback["need_to_render_sidebar"] as $fn) {
        $fn();
    }
    

    但是您可以通过传递额外参数、返回数据以及更重要的是:使用对象而不是过程回调来实现更复杂的功能,从而使其更加灵活。 (我建议混合搭配。没有一种方法适合所有应用程序或扩展。)

    同样,插件系统通常使扩展本身能够回调主应用程序、向其中提供数据或修改设置。

    插件系统需要考虑的第二部分是如何使其易于管理。基本上每个 WebCMS/DMS 都有自己的方法。许多使用 zip 文件手动解压,或模块目录。对于初学者来说,类似 WP 的元数据增强脚本文件方法是最合适的。我做了一个类似的系统,可以独立于 WP 使用,虽然它很粗糙:http://milki.include-once.org/genericplugins/(好的部分实际上是设置的可管理性。)

    【讨论】:

      【解决方案2】:

      只是一个简单的概念。

      您可以将扩展用作 PHP 类,并将它们存储在一个(或多个)目录 (-ies) 中的单独文件中。您必须通过浏览扩展文件并创建这些类的对象来初始化主应用程序中的扩展。

      添加新扩展将包括将新类文件添加到目录中。您还可以在扩展中添加启用/禁用功能或在主应用程序中管理。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多