首页 > 软件是怎么支持插件的?

软件是怎么支持插件的?

想问一下,软件都是怎么支持插件的。

比如 wordpress , drupal 等,他们都可以很好的支持插件来扩展系统的功能,这个是如何做到的呢?

或者说一个系统在设计阶段,如何考虑更好的支持插件系统呢?


这肯定是涉及一系列的接口规约,通过这些接口,插件可以获取其想获取的信息之类,一般都存在接口文档,其实就跟微信的公众号开发差不多


WordPress插件机制关键就是定义在 ./wp-includes/plugin.php 里的几个函数:
add_action / do_action
add_filter / apply_filters
WordPress在需要扩展的系统函数里通过 do_action 执行插件定义的函数.
比如WordPress自带的防垃圾评论插件akismet:

//这是系统函数 wp_insert_comment 里执行插件定义函数的地方
./wp-includes/comment.php:2149:
do_action( 'wp_insert_comment', $id, $comment );

//插件里通过 add_action 通知系统要扩展 wp_insert_comment
//在 do_action 那里执行自定义的函数 auto_check_update_meta
./wp-content/plugins/akismet/class.akismet.php:25:
add_action( 'wp_insert_comment', array( 'Akismet', 'auto_check_update_meta' ), 10, 2 );

do_action里主要就是func_get_args/call_user_func_array执行插件的函数.

个人认为,WordPress的插件机制是WordPress性能不佳的一个重要因素.

【热门文章】
【热门文章】