【问题标题】:Is there any php framework to build a web app with plugins feature?是否有任何 php 框架来构建具有插件功能的 Web 应用程序?
【发布时间】:2011-04-08 09:13:25
【问题描述】:

我正在构建一个用于关键字研究的网络应用程序。它的主要作用是接受一个关键字并使用它来发出 curl 请求并解析数字,然后将其存储在 mysql 表中。例如,curl 请求将用于检索 yahoo 的结果数量、该关键字的 digg 数量等。

所以我想以某种方式对其进行编码以使用插件(一个用于 yahoo,另一个用于 digg 等)。

是否有任何 php 框架可以帮助我做到这一点?

【问题讨论】:

    标签: web-applications frameworks php


    【解决方案1】:

    框架不处理这样的事情。你需要用插件的方式编码。

    以下场景将允许您以插件方式编写代码:

    假设我们在站点的根目录中有一个名为 plugins 的目录,并在数据库中有一个名为 plugins 的表,其结构如下(id、名称、启用、路径)

    现在您需要为您的插件创建一个接口。这样所有插件都将具有相同的基本结构。

    /**
     * FILE: /plugins/PluginInterface.php
     *
     * Sample Interface
     */
    interface iPlugin{
    
        /**
         * Tests if plug-in can be executed
         */
        function test();
    
        /**
         * Prepared plug-in for execution
         */
        function prepare();
    
        /**
         * Executes plug-in logic and returns count of somethings
         */
        function execute();
    }
    
    
    /**
     * FILE: /plugins/PluginExample.php
     *
     * Sample Plug-in
     */
    class PluginExample implements iPlugin{
    
        public function execute() {
    
        }
    
        public function prepare() {
    
        }
    
        public function test() {
    
        }
    }
    

    现在您需要在数据库中为 PluginExample 插入一条记录。

    INSERT INTO plugins (id, name, enabled, path) VALUES (1, 'Example', 1, 'PluginExample.php')
    

    最后,您需要某种控制器来从数据库(获取路径)加载所有启用的插件并创建对象并执行它们。像这样

    function loadAndExecutePlugins() {
        $query = "select * from plugins where enabled = 1";
        $plugins = 'array of objects from query 1';
    
        if ($plugins) {
            foreach ($plugins as $plugin) {
                //
                $class = $plug->path;
                include_once "/plugins/$class";
    
                //  Class is using interface, so you know what methods to call
                $plug = new $class();
                if ($plug->test()) {
                    $plug->execute();
                }
            }
        }
    }
    

    【讨论】:

    【解决方案2】:

    PHP Fat-Free Framework 已经有一个可供您使用的 Yahoo 插件。虽然没有 Digg 插件,但应该很容易在 Yahoo 插件之后对其进行模式化。看一下代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-08
      • 2018-12-16
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多