我正在为关键字研究构建一个网络应用程序。它主要是它需要一个关键字,它使用它来发出curl请求,它解析数字,然后存储在mysql表中。卷曲请求将用于检索雅虎数量的结果,该关键字的数量等等。
所以我想用某种方式编写代码来使用插件(一个用于yahoo,另一个用于digg等)。
是否有任何php框架可以帮助我做到这一点?
答案 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插件之后应该很容易对其进行模式化。看看代码。