PHP在类外部将函数var从false设置为true

时间:2017-03-10 20:07:46

标签: php class

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

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

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

如何从班级外部将此变量设置为false

3 个答案:

答案 0 :(得分:0)

调用此方法时,如果不提供参数,则默认为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

答案 1 :(得分:-1)

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

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

// $this->admin_sidebar();

这样可以防止对此功能的任何调用被覆盖,并且会在其他地方停用广告。

您也可以只更改默认值:

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

答案 2 :(得分:-1)

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();