何时检查函数是否存在

时间:2011-07-18 作者:Robbie

我刚刚开始开发一个WP插件,我一直在阅读其他插件的一些代码,作为开始的一种方式。我已经看到了一些插件,它们将其全部或部分功能包装在以下代码中:

if(!function_exists(\'my_function\')) {
    function my_function() {
        // a cool function
    }
}
在这段代码中封装所有函数以避免与其他插件的命名冲突是否被认为是一种良好的做法?

谢谢

1 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

我不会这样做来防止命名冲突:如果另一个不相关的插件使用相同的名称,它们不太可能提供相同的功能,并且您的插件可以正常运行。在那里,你希望尽早失败,而不是在以后偷偷摸摸。或者使用更好的前缀防止冲突,当然:-)

这样做的唯一原因是创建一个可插拔功能,这是一个单独的功能,可以通过其他插件以不同的方式实现。您可以在WordPress核心代码中看到这一点:像wp\\u mail()这样的函数是可插入的,因此您可以使用完全自定义的邮件系统。

您还可以在可能获得子主题的主题中看到这一点。默认主题Twemty Eleven和Tweety Ten就是很好的例子。子主题可以使用相同的名称定义函数,将使用它们。

就个人而言,我真的不喜欢这种为其他代码提供挂钩的方法。它们使我们更难弄清楚将调用什么代码(MyIDE代码的完成变得混乱)。我尝试通过“经典”操作和过滤器提供所有扩展点。

结束

相关推荐

获取在Functions.php中设置的变量,并在我的Custom Post模板中回显它们

在我的函数中设置了以下函数。php文件,以允许我的自定义帖子类型“Slideshow”工作。add_action( \'the_post\', \'paginate_slide\' ); function paginate_slide( $post ) { global $pages, $multipage, $numpages; if( is_single() && get_post_type() == \'lom_s