2010-09-05 78 views
2

我正在爲關鍵字研究構建一個網絡應用程序。主要是它需要一個關鍵字,它使用它來創建curl請求,並解析數字,然後存儲在mysql表中。 curl請求將用於檢索yahoo的結果數量,該關鍵字的diggs數量等。是否有任何PHP框架來建立一個具有插件功能的Web應用程序?

所以我想以某種方式對它進行編碼以使用插件(一個用於雅虎,另一個用於digg等) )。

有沒有任何PHP框架可以幫助我做到這一點?

回答

2

框架不處理這樣的事情。你需要以插件的方式進行編碼。

以下情形將允許你在插件的方式代碼:

比方說我們在網站的根目錄,並在數據庫中的表稱爲插件具有以下結構的目錄稱爲插件(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(); 
      } 
     } 
    } 
} 
+0

謝謝,我發現這個答案太有用http://stackoverflow.com/questions/42/best-way-to-allow-plugins-for-a-php-application,但你的代碼更容易理解我。 – jarkam 2010-09-05 05:42:05

0

PHP Fat-Free Framework已經有一個你可以使用的雅虎插件。儘管Digg插件不存在,但應該很容易在雅虎插件之後對其進行構圖。看看代碼。

相關問題