我很好奇插件如何工作,我只是知道,而不是改變我們使用插件的代碼,但他們如何在不更改代碼的情況下完成他們的工作?編碼人員在編寫新項目時應該考慮什麼,以便可以擁有插件?並非常感謝你:D插件系統如何工作(wordpress,mybb ...)?
13
A
回答
19
關於如何實現插件系統有多種變化。 WordPress的使用一個相當常見的方案,通常被稱爲「鉤子」。我不知道確切的實現,但它基本上是這樣的:
// plugin.php script registers its own callback function
register_plugin("hook_type", "plugin_function_123");
function plugin_function_123($params) { ... }
凡hook_type
往往是一個動作名字什麼的。當主應用程序通過一個特殊點(或如需要processsed一些數據),它會調用所有註冊的回調函數:
$output = call_plugins("hook_type", $param1, $param2);
這通常是在幕後實現爲一個簡單的循環:
foreach ($registered_plugins[$action] as $func) {
$func($param1, $param2, ...); // or call_user_func_
}
現在,它取決於鉤子/動作類型的參數是什麼,以及是否有預期的結果文本。參數傳遞也有差異(例如,某些回調需要& $ var引用)。而一些插件系統依賴於對象(如果不是那麼多的不同的動作類型存在或更復雜的結構將被處理)。
+0
謝謝你這個詳細的答案:D – Peter 2011-02-26 15:16:20
相關問題
- 1. Nutch的插件系統如何工作?
- 2. Mybb信譽系統
- 3. 如何製作「插件」評論系統
- 4. WordPress插件工作
- 5. Wordpress和Mybb
- 6. 如何與wp_enqeue_scripts在WordPress插件工作
- 7. 事件驅動系統如何工作?
- 8. Apache文件系統如何工作?
- 9. Windows文件系統如何工作?
- 10. 系統插件如何工作?誰實例化我的類?
- 11. WordPress插件統計
- 12. WordPress永久鏈接系統如何工作?
- 13. WordPress的:什麼插件(S)的工作表格跟蹤/管理系統?
- 14. 插入php插件不工作Wordpress
- 15. 如何組織已經工作的插件系統的文件結構?
- 16. PHP插件系統
- 17. WinForm插件系統
- 18. MVC3插件系統
- 19. StackExchange的「編輯系統」如何工作?
- 20. Django緩存系統如何工作?
- 21. 評分系統如何工作?
- 22. Message Queue系統如何工作?
- 23. 星級評分系統如何工作?
- 24. 瞭解Django Apps系統如何工作
- 25. execlp()系統調用如何工作?
- 26. execle()系統調用如何工作?
- 27. 裝載系統調用如何工作?
- 28. Twitter的OAuth系統如何工作?
- 29. 你如何用C++做系統工作?
- 30. 可可「視圖」系統如何工作?
好的,謝謝你告訴我這件事,因爲我以前不知道,謝謝:D – Peter 2011-02-26 15:14:47
你能分享一下你自己的經驗嗎?你問這個問題已經有一段時間了。 – 2016-01-15 13:58:43