将WP代码范围限制为插件

时间:2017-07-18 作者:Tree Nguyen

当我遇到这个问题时,我正在尝试为我的网站构建两个独立的自定义插件。它们都共享相同类型的作用域,这意味着我不能用相同的名称声明新的常量或函数。这是一个已知的问题,您只需添加前缀?还是有更好的方法来解决这个问题?

谢谢

1 个回复
SO网友:Cedon

在PHP中,常量是全局的,因此它们没有作用域。根据PHP Manual:

与超全局一样,常数的范围也是全局的。您可以在脚本中的任何位置访问常量,而无需考虑范围。

如果您使用的是PHP类,则有一个例外。然后可以将常量绑定到该类。

class My_Class
{
    const BLAH = \'This is a Constant\';
{
print My_Class::BLAH
至于函数,它们和常量一样,也是全局的。根据PHP Manual:

PHP中的所有函数和类都具有全局作用域,即使它们是在函数内部定义的,也可以在函数外部调用,反之亦然。

例如,如果我有:

function my_func() {
    function my_other_func() {
        // Code
    }

    // More Code
}
我可以打电话my_other_func() 即使在my_func().

您可以使用PHP类再次绕过此问题:

class My_Class
{
   public function echo_hello_world() {
       $this->echo_hello();
       $this->echo_world();
   }

   private function echo_hello() {
       echo \'Hello \';
   }

   private function echo_world() {
       echo \'World!\';
   }
}

$testObj = new My_Class();

$testObj->echo_hello_world();
然而,如果类的杀伤力过大,那么最好的办法就是通过在当前使用的名称前添加一些独特的内容来命名所有内容。通常我会附加我为插件/主题定义的textdomainmy_function() 成为textdomain_my_function().

结束

相关推荐

Theme styling for plugins

我有一个插件,它有自己的CSS,用于在使用相关短代码时生成的内容。我正在尝试创建一个主题来重新设置我网站前端的样式,但由于这个插件有自己的CSS,我如何在新主题中修改它?