是否有任何PHP框架来构建具有插件功能的Web应用程序?

时间:2010-09-05 04:31:12

标签: web-applications frameworks php

我正在为关键字研究构建一个网络应用程序。它主要是它需要一个关键字,它使用它来发出curl请求,它解析数字,然后存储在mysql表中。卷曲请求将用于检索雅虎数量的结果,该关键字的数量等等。

所以我想用某种方式编写代码来使用插件(一个用于yahoo,另一个用于digg等)。

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

2 个答案:

答案 0 :(得分:2)

框架不处理这样的事情。您需要以插件方式对其进行编码。

以下场景将允许您以插件方式进行编码:

假设我们在站点的根目录中有一个名为plugins的目录,在数据库中有一个名为plugins的表,其中包含以下结构(id,name,enabled,path)

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

/**
 * 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();
            }
        }
    }
}

答案 1 :(得分:0)

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