【问题标题】:PHP set a function var from false to true from outside the classPHP从类外部将函数var从false设置为true
【发布时间】:2017-03-10 20:07:45
【问题描述】:

类中有一个烦人的函数,它添加了广告,我希望将它们从类外删除。函数如下所示:

class Ads_Form {
    public function admin_footer( $submit = true, $show_sidebar = true ) {
        if ( $show_sidebar ) {
            $this->admin_sidebar();
        }
    }
}

如您所见,有一个名为$show_sidebar 的变量默认设置为true

如何在课堂外将此 var 设置为 false

【问题讨论】:

  • 你不能。为什么不在那里或调用时将其设置为false
  • @AbraCadaver 我知道你来自哪里——这是最合乎逻辑的方式。但是我正在制作一个插件,以便其他人也可以从中受益,因此必须从类外部调用它。
  • @AbraCadaver 有没有办法删除这个类?
  • 这对于您拥有什么以及您正在尝试做什么来说太不清楚了。
  • @AbraCadaver 我很乐意解释一下——我正在使用 WordPress,并且 WordPress 插件必须使用挂钩来归档某些内容,没有直接编辑您想要编辑的文件。所以我必须归档如何在不直接编辑文件的情况下编辑这个插件。

标签: php class


【解决方案1】:

调用该方法时,如果不提供参数,则默认为false:

$obj = new Ads_Form();
$obj->admin_footer();
// $show_sidebar gets set to true

只需传递参数,这将覆盖默认值:

$obj = new Ads_Form();
$obj->admin_footer(true, false);
// $show_sidebar gets set to false

【讨论】:

  • 试过了,但我的屏幕变黑了。你知道这是什么原因吗?
  • “你知道这是什么原因吗?”拼写错误? :)
  • False 拼写正确。 ;) 我正在使用 WordPress,所以它有点想知道如何从插件 pov 中获得它。
  • 如果您遇到崩溃并且您所做的唯一更改是在此方法调用中添加两个参数,那么您的问题不在于 WordPress 的插件系统。检查您的错误日志。
【解决方案2】:

如果不编辑文件本身就很难实现。无论哪种方式,您都必须编辑类或调用此函数的每个文件/函数。

不要删除类或更改默认值,如果您有权编辑类文件,只需注释掉该行:

// $this->admin_sidebar();

这将防止对该函数的任何调用被覆盖,并将禁用其他地方的广告。

您也可以只更改默认值:

admin_footer( $submit = true, $show_sidebar = false )

【讨论】:

  • 确实有效,但需要从类外调用。
【解决方案3】:
class Ads_Form {
    public $show_sidebar = true;

    public function admin_footer($submit = true, $show_sidebar = null) {
        if(!is_null($show_sidebar)) {
            $this->show_sidebar = (boolean)$show_sidebar;
        }
    }

    if($this->show_sidebar) {
        echo 'test<br>';
    }
}

测试代码!

$Ads_Form = new Ads_Form;
echo '------------TEST 1-------------<br>';
$Ads_Form->admin_footer();
$Ads_Form->show_sidebar = false;
echo '------------TEST 2-------------<br>';
$Ads_Form->admin_footer();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多