我正在为关键字研究构建一个网络应用程序。主要是它需要一个关键字,它使用它来创建curl请求,并解析数字,然后存储在mysql表中。 curl请求将用于检索yahoo的结果数量,该关键字的diggs数量等。是否有任何PHP框架来建立一个具有插件功能的Web应用程序?
所以我想以某种方式对它进行编码以使用插件(一个用于雅虎,另一个用于digg等) )。
有没有任何PHP框架可以帮助我做到这一点?
我正在为关键字研究构建一个网络应用程序。主要是它需要一个关键字,它使用它来创建curl请求,并解析数字,然后存储在mysql表中。 curl请求将用于检索yahoo的结果数量,该关键字的diggs数量等。是否有任何PHP框架来建立一个具有插件功能的Web应用程序?
所以我想以某种方式对它进行编码以使用插件(一个用于雅虎,另一个用于digg等) )。
有没有任何PHP框架可以帮助我做到这一点?
框架不处理这样的事情。你需要以插件的方式进行编码。
以下情形将允许你在插件的方式代码:
比方说我们在网站的根目录,并在数据库中的表称为插件具有以下结构的目录称为插件(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')
最后一点,你需要控制的somekind的加载所有启用插件从数据库中(得到的路径)和创建对象并执行。像这样
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();
}
}
}
}
PHP Fat-Free Framework已经有一个你可以使用的雅虎插件。尽管Digg插件不存在,但应该很容易在雅虎插件之后对其进行构图。看看代码。
谢谢,我发现这个答案太有用http://stackoverflow.com/questions/42/best-way-to-allow-plugins-for-a-php-application,但你的代码更容易理解我。 – jarkam 2010-09-05 05:42:05