PHP:在类中设置一个全局变量

时间:2016-09-23 04:08:52

标签: php class variables global-variables

在PHP类中,有没有办法设置一个不需要在每个函数中调用的全局变量?

例如,我有一个名为$settings的变量,它包含一个值数组:

Array( [option_1] => on, [option_2] => on, [option_3] => off )

get_option()函数来自WordPress。 $settings数组中的值确定要运行的函数:

class My_Class {

    public function __construct() {
        # Get array of options
        $settings = get_option( 'my_options' );

        if ( is_array( $settings ) || is_object( $settings ) ) {
            if ( $settings['option_1'] == 'on' ) {
                add_action( 'tag_1', array( $this, 'function_1' ) );
            }

            if ( $settings['option_2'] == 'on' ) {
                add_action( 'tag_2', array( $this, 'function_2' ) );
            }
        }
    }

    public function function_1() {
        # Call the array of options again
        $settings = get_option( 'my_options' );

        echo 'This option is ' . $settings['option_1'];
    }

    public function function_2() {
        # Code here...
    }

new My_Class();

但是,我在__construct()function_1()

中拨打了以下两行
$settings = get_option( 'my_options' );

不是在两个不同的函数中调用这个变量两次,调用可以在我的类的不同函数中使用的相同变量的正确方法是什么?我尝试在$settings下方添加class My_Class变量函数,但这不起作用:

class My_Class {

    global $settings = get_option( 'my_options' );
    # Rest of the code below...

1 个答案:

答案 0 :(得分:2)

您可以将$ settings声明为类属性

protected $settings;

然后在__construct

$this->settings = get_option( 'my_options' );

然后,您可以使用$this->settings

在课堂内的任何位置访问它
public function function_1() {
    echo 'This option is ' . $this->settings['option_1'];
}

有关properties的更多详细信息,请参阅PHP文档http://php.net/manual/en/language.oop5.properties.php