private functions in plugins

时间:2013-07-24 作者:AleV

我开发了两个插件,其中一个功能相同(相同的名称,相同的功能)。当试图激活两个插件时,Wordpress会抛出一个错误,因为它不允许我以相同的名称定义函数两次。

有没有一种方法可以使这个函数只对插件私有,而不使用面向对象编程,也不简单地重命名函数?我不想使用OOP,因为我首先要学习它。此外,我不想重命名该函数,因为我可能也想在其他插件中使用它,而重命名感觉不太合适。

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

嗯,我想这是不可能的。若您在全局范围内定义函数,那个么它对所有代码都是可见的。

使插件私有化的唯一方法是使用OOP(这是编写插件的推荐方法)。

您可以重命名此函数,但从长远来看,它不会解决您的问题(仍然有可能存在同名函数)。

SO网友:helgatheviking

就实际范围而言,不,您不能将常规函数设为私有函数,这仅适用于类方法(和类变量等)。使用OOP进行名称空间实际上并没有那么困难,interwebs上应该有一些不错的tut。但是,您可以创建函数,"pluggable" 使用function_exists() 包装器。这样,只有当函数不存在时,函数才会运行。

if( ! function_exists(\'your_function\') ) {
  function your_function() {
    // do something
  }
}
如果这样包装这两个函数,则应忽略最后加载的函数,并且不会出现“函数已声明”错误。

结束